Traceback (most recent call last): File "/home/app/auto_train/scripts/train_auto/train_auto.py",
line 5, in from monitor import yarn_monitor
ImportError: No module named monitor
我们可以通过打印sys.path,看我们的引用的模块到底有没有添加到sys.path里面
import sys
print(sys.path)
输出的结果
['/usr/lib64/python27.zip',
'/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old',
'/usr/lib64/python2.7/lib-dynload']
1.如果要import文件夹里的脚本,必须package才行,dictionary不行,区别是有没有__init__.py
2.如果是python2,在import同一个文件夹里的,不用加前缀,比如project/src/test.py 引用project/src/test2.py,其中project是工程名 直接使用test2
给大家推荐两个比较好用的解决方案,当然还有其他的方式,但是这两种是最简单,最方便的解决方式。
在代码中通过sys.path.append把我们的项目全部加载到sys.path中,地址具体到我们的项目名最好,这样能把所有的模块添加到sys.path。
注意事项:sys.path.append一定要在引用包的前面调用
import sys sys.path.append("/home/app/auto_train/scripts/")
直接把我们所引用的项目地址放到python的环境变量中,这样python脚本在linux服务器上运行时,会直接通过python的环境变量找到项目所引用包的地址。
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PYTHONPATH=/home/app/auto_train/scripts
export PATH
扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦
扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦
扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦