大话性能 python 新手学习 ImportError: No module named XXX 的问题

大话性能 · 2023年06月20日 · 2732 次阅读

背景

mac crontab 调用 python 时出现 ImportError: No module named XXX 的问题

把这个脚本加入 crontab 里进行时刻监控,于是 #crontab -e,添加语句
nohup python proxyIp.py >./proxy.log &

但是在 shell 里单独执行是 OK 的,于是添加了 source /etc/profile 还是报错,可见不是环境变量的问题,怎么办?
source /etc/profile && nohup /usr/bin/python proxyIp.py >./proxy.log &

首先,#which python,确定 python 的路径:

如果一台机器上装有多个版本的 python,更是要指明 python 的路径,不然 crontab 就会笨笨的去找默认路径。

小结

如果出现 ImportError: No module named XXX 问题
可能原因:
1、没安装对应的 moduel 模块。
2、系统存在多个 pip 版本,安装 module 模块的时候要使用要用的 pip 那个版本去安装。
3、系统存在多个 python 版本,调用 python 命令的时候,最好明确是哪个版本的 python 执行器。
4、有时候代码在本地 mac 执行 ok,而放到了服务器上,在调用自己写的其他模块代码时候,如果出现上面这个错误,只需要在文件头写 sys.path.append('/home/PerfEngine'),显式声明工程的路径即可。

Ps:
归根到底就是 python 很蠢的,这个问题就是路径问题。
import sys
print(sys.path)   # 查看当前路径

from os import path
d = os.path.dirname(file)  # 获取当前路径
parent_path = os.path.dirname(d)  # 获取上一级路径
sys.path.append(parent_path)    # 如果要导入到包在上一级

更多内容可以学习《测试工程师 Python 工具开发实战》书籍

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册