背景:个人python菜鸟,问题触发学习python。在用pyinstaller打包一个py为exe后发现运行不了出现标题所示的问题。在几天时间内查询各种帖子还是无法解决,后来组长提示可能是环境变量无问题。本人经过尝试后确实是PYTHONPATH没有设置导致的,谨以此文记录自己郁闷的几天吧!
现象:
ModuleNotFoundError: No module named 'tools'
详见之前的咨询帖:
https://ask.csdn.net/questions/8140000?weChatOA=weChatOA1
但是本身py脚本在pcharm里是可以执行的。但是在命令行也不能执行(即使用 python hardware_info.py -a 1.1.1.1),也是找不到tools模块。
过程:
期间做过的一些尝试,比如
1、添加--hidden-import 参数, -D参数,等参数,无效果。(各种参数的含义此处略)
2、升级pyinstaller版本也无效。将pyinstaller从3.2.1版本升级到4.10版本,也无效。
版本的查看可以用pyinstaller --version
3、求助我的领导(大牛1个),说是环境变量有问题,并贴出了几个疑似的环境变量。我尝试在cmd里先设置PYTHONPATH后,在到dist目录下运行生成的exe文件,就没有问题了,即
set PYTHONPATH=D:\proj\
proj是脚本所在的详细目录。
并搜索了PYTHONPATH的一些知识点,再次感谢之前乐于分享的博主们!
主要有下面2个:
第一个;
Python搜索模块的路径:
1)、程序的主目录
2)、PTYHONPATH目录
3)、标准连接库目录
4)、任何的.pth文件的内容
这四个组建组合起来就是sys.path的结果
https://blog.csdn.net/hzblucky1314/article/details/128541235?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-128541235-blog-126920270.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-128541235-blog-126920270.235%5Ev43%5Econtrol&utm_relevant_index=2
第2个 ---这个本人还没有理解透!!!!!
“”能否通过在当前工作路径运行别的路径的脚本来导入当前路径的脚本,答案是不行,需要将当前工作路径加入PYTHONPATH。“