目录
简介
问题原因:pyinstaller打包的执行文件包含的 某个python库 版本更新造成不兼容
解决思路:在 pypi.org 中去寻找报错的库 第二新版本 pip时报错库尝试设置此版本
实例1
运行执行文件报错 salt 库 相关的 No module named ‘setuptools._distutils‘
查询网址 pypi.org/project/salt/#history 如下图:
此时salt最新版本是3005 但使用pyinstaller打包为执行文件后 报错 No module named ‘setuptools._distutils‘ 所以 pip是设置 salt==3004.2 暂时不用最新版本
实例2
我查看了我自己的virtualenv的版本发现正是他介绍的这个版本.
在cmd中查看自己virtualenv的版本,输入如下命令
virtualenv --version
查看到我的virtualenv 16.4.0,是目前最新的版本
使用virtualenv 16.4.0,pyinstaller报告:
3583 INFO: distutils: retargeting to non-venv dir '/usr/lib64/python3.6/distutils/__init__.py'
然后在“加载模块挂钩”序列期间,hook-distutils.py
缺少并且distutils模块不包含在最终的可执行二进制文件中。
ModuleNotFoundError: No module named 'distutils'
[10373] Failed to execute script <name here>
使用virtualenv 16.1.0,pyinstaller报告:
3157 INFO: Processing pre-find module path hook distutils
5053 INFO: Loading module hook "hook-distutils.py"...
分析了他们的解决方案,我正好报着 尝试一下的态度.马上去降级我的virtualenv的版本为 16.1.具体步骤:
先卸载virtualenv
pip uninstall virtualenv
重新安装版本为16.1的virtualenv,
pip install virtualenv==16.1 # 安装指定版本的virtualenv
安装完成后我在用原来的虚拟环境打包,发现依旧问题没有解决.于是乎我就把原来的虚拟环境全部给删除了.重新使用virtualenv命令新建了一个全新的虚拟环境
virtualenv --no-site-packages XXX # xxx 是虚拟环境的名称
在把项目需要的包全部重新再找个虚拟环境中安装一遍:
pip install -r requirements.txt # requirements.txt是项目需要的包的文件
*注意: pip的使用请自行参考相关文档
在使用打包命令重新打包项目
pyinstaller -F run.py
这次打包成功后再运行,发现问题解决.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。