问题来源:
用惯了Pycharm的人,在其他IDE中运行比较复杂的python项目,特别是有许多自己写的类,模块导入往往会出现问题:
比如,在项目Project中,有A,B两个文件夹,a.py和b.py分别是它们的子文件,若b.py需要导入a.py中的某个模块m:
from A.a import m
直接运行b.py,报错
原因在于,系统不知道工程的根目录所在,而且我们不可能每次都使用cd跳转到a.py文件所在的文件夹
解决方案
-
方案1:声明工程的根目录,将根目录添加到环境变量
export PYTHONPATH=/home/bin/module:$“工程根目录路径”
-
方案2:添加当前工作目录到默认模块搜索路径
workon # 虚拟环境
python3 # 进入python编辑器
# 找到python的sitepackages路径
improt site
site.getsitepackages()
在site-packaegs添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称,然后保存退出就好了
# 新建mypkpath.pth
vim "site-packages的路径/mypkpath.pth"
# 输入当前工作目录, 保存退出
/root/py
重新进入python编译器,查看当前搜索路径,发现多了/root/py
workon # 虚拟环境
python3 # 进入python编辑器
# 查看当前搜索路径
improt sys
sys.path