linux下python组织自定义模块,解决模块存在无法导入 |
您所在的位置:网站首页 › python中utils包不能导入 › linux下python组织自定义模块,解决模块存在无法导入 |
问题背景
在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 |