pyinstaller3.6使用一些坑

win7环境 或者 ubt14.04环境,配合python3.7.Xpyinstaller3.6对一些代码进行打包,以aiohttp的web项目为例子:

创建存放二进制文件的路基:D:\program\mywork\pyworkspace\sa2_bin 然后命令行进入。

对需要打包的工程main文件进行打包:pyinstaller -F D:\program\mywork\pyworkspace\sa2\AioRpcServer.py

注意:main文件必须要有main入口:if __name__ == '__main__':

打包完成后会生成build文件夹、dist文件夹、AioRpcServer.spec描述文件:

若是aiohttp的web工程,则可以将原工程中与AioRpcServer.py同级的静态文件拷贝到dist下与AioRpcServer.exe同级,例子:

用命令行 执行 AioRpcServer.exe

1.若报错ModuleNotFoundError,则在对应的文件头import缺失的模块后重新编译

ModuleNotFoundError


2.若报错FileNotFoundError:No such file or directory,则编写对应的hook钩子文件后重新编译:

如下图所例,缺少jsonrpcserver包下的文件,则在hooks路径下(win7是C:\Program Files\Python37\Lib\site-packages\PyInstaller\hooks   ubuntu14.04是/usr/local/python3/lib/python3.7/site-packages/PyInstaller/hooks)新建hoolk-<模块名>.py,这里是hook-jsonrpcserver.py,并添加内容:

# -*- coding: UTF-8 -*-

from PyInstaller.utils.hooks import collect_data_files

datas = collect_data_files("jsonrpcserver")

FileNotFoundError

3.若报错no module named 'pkg_resources.py2_warn':

则要降低setuptools版本:pip uninstaller setuptoolspip installer setuptools==44.0.0


4.若报错 如下则是 PBR的问题:

则要在使用到python-glanceclient的py文件头加上:

import os

os.environ['PBR_VERSION'] ='3.0.1'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容