Python打包工具(PyInstaller)心得

PyInstaller说明

PyInstaller的下载的话直接可以看官网的说明:http://www.pyinstaller.org/

//win + r 打开运行 输入 cmd 输入以下代码
pip install pyinstaller
//安装完成之后切换到你的目标文件的目录下,运行如下代码生成执行文件
pyinstaller yourprogram.py
然后就可以生成可执行文件。生成的可执行文件在dist这个文件夹里面

pyinstaller还有一些参数可供选择(具体使用之后慢慢更新)
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面是非常有用。不过如果是命令行程序的话那就删除这个选项!
-p 表示你自己定义需要加载的类路劲,一般情况下用不到
-i 表示可执行文件的图标

正常打包输出:

pyinstaller -F xxxx.py

设置图标输出:

pyinstaller -i xxx.ico -F xxxx.py

增加程序版本信息:

  • 准备好版本信息文件:file_version_info.txt
    版本信息文件可以通过pyinstaller自带工具(pyi-grab_version)获取:
    命令:pyi-grab_version.exe xxxx.exe file_version_info.txt
    其中xxxx.exe是有软件版本信息的执行文件。
    这样可以通过编辑file_version_info.txt,获得自己的版本信息文件

  • 打包时用参数--version-file :
    pyinstaller --version-file=file_version_info.txt test.py

  • 加版本信息,加ico,单文件的打包命令
    pyinstaller --version-file=file_version_info.txt -i setup.ico -F main.py

错误

  • RecursionError: maximum recursion depth exceeded
    这个递归错误,大概率是自己调用自己太多次导致的。

    解决办法:
    pyinstaller 之后会生成一个和xxx.py文件同名的 xxx.spec 文件
    打开xxx.spec文件,在行首导入sys包,然后设置一下递归调用的限制次数,可以大一点。

    import sys
    sys.setrecursionlimit(100000)
    block_cipher = None
    

    修改之后,然后 pyinstall -F xxx.spec就行了

  • AttributeError: module 'win32ctypes.pywin32.win32api' has no attribute 'error'
    这个错误是因为图标文件没有使用.ico文件造成的

  • No such file or directory: ‘C:\Users\user\AppData\Local\Temp_MEI106802\abcd\yyyy

    新建hook-abcd.py文件
    在py文件中输入:

    from PyInstaller.utils.hooks import collect_data_files
    datas = collect_data_files("abcd")
    

    保存后将此py文件放入Pyinstaller下的hook的文件夹中,重新打包问题解决。

  • 打包成功,但运行时出现加载文件错误
    打印文件路径显示:C:\Users\user\AppData\Local\Temp_MEI213162\xxxxxx

    解决办法:

    if getattr(sys, 'frozen', False):
        absPath = os.path.dirname(os.path.abspath(sys.executable))
    elif __file__:
        absPath = os.path.dirname(os.path.abspath(__file__))
    

    这样根据运行方式,定义相对路径,问题解决。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容