python导包失败问题解析--ImportError: No module named XXXX

问题

Traceback (most recent call last): File "/home/app/auto_train/scripts/train_auto/train_auto.py", 
line 5, in <module> from monitor import yarn_monitor
 ImportError: No module named monitor

分析

  1. 在pycharm中右键运行没问题,但是去服务器直接用python命令去直接执行就会报上面的错误
  2. pycharm中运行python代码,它自动为你设置好了项目的路径到sys.path中,而我们的项目往往要到服务器运行,而在linux服务器上用python命令执行时,项目的路径并没有自动添加到sys.path中,需要我们自己配置

验证

我们可以通过打印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.append把我们的项目全部加载到sys.path中,地址具体到我们的项目名最好,这样能把所有的模块添加到sys.path。

注意事项:sys.path.append一定要在引用包的前面调用

import sys sys.path.append("/home/app/auto_train/scripts/")

方法二 添加PYTHONPATH环境变量(推荐)

                直接把我们所引用的项目地址放到python的环境变量中,这样python脚本在linux服务器上运行时,会直接通过python的环境变量找到项目所引用包的地址。

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PYTHONPATH=/home/app/auto_train/scripts
export PATH

扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦

扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦

扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦

         

 

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿华田512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值