pyinstaller打包报错

问题遇到的现象和发生背景

在MacOS中用pycharm给程序打包

问题相关代码,请勿粘贴截图

使用 pyinstaller --add-data="TestForm.ui:." main.py -nTest7 -w -F命令给程序打包

运行结果及报错内容

Traceback (most recent call last):
File "/Users/qinweihua/Desktop/pythonProject/venv1/bin/pyinstaller", line 8, in
sys.exit(run())
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/main.py", line 124, in run
run_build(pyi_config, spec_file, **vars(args))
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/main.py", line 58, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 803, in main
build(specfile, distpath, workpath, clean_build)
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 725, in build
exec(code, spec_namespace)
File "/Users/qinweihua/Desktop/pythonProject/Test7.spec", line 40, in
entitlements_file=None )
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/building/api.py", line 510, in init
self.postinit()
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/building/datastruct.py", line 155, in postinit
self.assemble()
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/building/api.py", line 765, in assemble
pylib_version = osxutils.get_macos_sdk_version(bindepend.get_python_library_path())
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/utils/osx.py", line 97, in get_macos_sdk_version
version_cmd = _find_version_cmd(header)
File "/Users/qinweihua/Desktop/pythonProject/venv1/lib/python3.6/site-packages/PyInstaller/utils/osx.py", line 82, in _find_version_cmd
assert len(version_cmd) == 1, "Expected exactly one LC_BUILD_VERSION or LC_VERSION_MIN_MACOSX command!"
AssertionError: Expected exactly one LC_BUILD_VERSION or LC_VERSION_MIN_MACOSX command!

main.py换个名字试试 比如说main2.py

原因
原因可能跟PyInstaller自定义的钩子有关,不确定是否已经修复


解决方法
尝试将Python版本降级到3.5来解决这个问题

详情可参考:


如有问题及时沟通

可以参考这篇文章去进行打包

参考我的这篇博客:
https://blog.csdn.net/zhengzaifeidelushang/article/details/124398774?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165278307416782248572320%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165278307416782248572320&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-124398774-null-null.nonecase&utm_term=pyinstaller&spm=1018.2226.3001.4450

使用的python版本是python3.6,pyinstaller版本是4.10,MacOS版本是Mojave10.1,我也测试过创建一个新项目(简单的HelloWorld)打包,也会报这样的错误,之前在python3.9,MacOS版本Monterey12.3.1上,pyinstaller 5.01上是可以打包成功的

版本问题。你找下python不同版本匹配的pyinstller。就知道了,我之前遇见过这情况折腾一天没没明白后来才发现是版本的问题。比如py3.6 不支持最新的4.10这个。

公证服务要求所有 Mach-O 图像都链接到 macOS 10.9 SDK 或更高版本。这不是一个任意的限制。强化运行时是另一个公证要求,它依赖于随 macOS 10.9 一起引入的代码签名功能,它使用 SDK 版本来检查它们的存在。具体来说,它使用LC_BUILD_VERSION Mach-O 加载命令(或较旧的LC_VERSION_MIN_MACOSX命令)中的sdk字段检查 SDK 版本。满足此要求的最佳方法是使用现代工具重新构建您的代码。