linux下python组织自定义模块,解决模块存在无法导入

您所在的位置:网站首页 python中utils包不能导入 linux下python组织自定义模块,解决模块存在无法导入

linux下python组织自定义模块,解决模块存在无法导入

2023-08-14 15:46| 来源: 网络整理| 查看: 265

问题背景

在windows下使用pycharm开发python程序,包导入正常,但是移植到Linux却说包找不到了,No module named 'xxx'

 

python包路径搜索机制

python搜索包的路径存储在sys.path下

临时添加python搜索包路径的方法:

import sys

sys.path.append(‘路径’)

 

小例子

sys.path返回一个列表,里面装的字符串,也就是搜索路径。

然后删除掉第一个,接着导入与  main.py同级目录的模块,发现导入失败。

import sys del sys.path[0] import testPackage.module1

 

重点问题

项目目录结构

-package1

-main1.py

-test_directory

  --main2.py     (放置在test文件夹下面)

如果是在main1.py中导入package1,完全OK,没有任何问题

如果是在main2.py中导入package1,出问题,找不到包

如何解决呢?

首先可以想到的是通过sys.path.append添加package1所在目录的绝对路径,这样可以解决问题,但是肯定不推荐,下载换个环境还得设置路径。

推荐方法 import os import sys dir_now=sys.path[0] dir_up=os.path.dirname(dir_now) dir_upup=os.path.dirname(dir_up) print(dir_now) print(dir_up) print(dir_upup)

首先是如何获取当前文件的所在目录,上级目录,上上级目录,注意这里是相对当前文件的目录(而不是执行时的工作目录)

然后我们就可以把相应的目录通过sys.path.append()添加进来

final import os import sys dir_now=sys.path[0] dir_up=os.path.dirname(dir_now) dir_upup=os.path.dirname(dir_up) print(dir_now) print(dir_up) print(dir_upup) sys.path.append(os.path.dirname(sys.path[0])) import testPackage.module1 #sys.path.append(os.path.dirname(os.path.dirname(sys.path[0]))) 添加上上级目录 根据自己项目选择

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3