赞
踩
昨天使用pyinstaller打包好后运行的时候提示:ModuleNotFoundError: No module named 'distutils’的错误.
尝试了各种办法都没有解决这个问题,直到在github上看见了到了issue.
我查看了我自己的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"...
和distutils模块包含在最终的可执行二进制文件中。
分析了他们的解决方案,我正好报着 尝试一下的态度.马上去降级我的virtualenv的版本为 16.1.具体步骤:
pip uninstall virtualenv
pip install virtualenv==16.1 # 安装指定版本的virtualenv
virtualenv --no-site-packages XXX # xxx 是虚拟环境的名称
pip install -r requirements.txt # requirements.txt是项目需要的包的文件
*注意: pip的使用请自行参考相关文档
pyinstaller -F run.py
这次打包成功后再运行,发现问题解决.
参考地址: https://github.com/pyinstaller/pyinstaller/issues/4064
个人经验总结.转载注明来源
作者:lizhonglin
github: https://github.com/Leezhonglin/
blog: https://leezhonglin.github.io/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。