我正在尝试将一些python打包到MacOS(10.14.5)上的可执行文件中。我能够创建可执行文件,但是执行生成的dist/hello_world
可执行文件会出现以下错误:
[55240] Error loading Python lib '/var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python': dlopen: dlopen(/var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python, 10): no suitable image found. Did find:
/var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python: code signature invalid for '/var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python'
我的计算机运行的Python 3.7.7是通过使用从https://www.python.org/下载的Mac安装程序安装的。
目前,我要打包的脚本仅包含print('hello world!')
,而我正在使用的打包命令为pyinstaller -F hello_world.py
答案 0 :(得分:1)
我成功使用pyenv并使用enable framework选项安装了特定版本的python:
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.7.6
使用此版本的python(在hello_world.py所在的文件夹中使用命令pyenv local 3.7.6
进行设置),使用pip
安装pyinstaller(以及您需要的任何其他模块)。然后使用
pyinstaller hello_world.py --onefile --clean --windowed
应该可以使您正常工作的dist/hello_word
。作为python的雏鸟,我不知道为什么这样做会与原始问题中的步骤相反。 (我以为Mac OS安装程序默认情况下包括Python.framework -我确信我的无知在这里暴露了,因为这可能与上面的PYTHON_CONFIGURE_OPTS
变量有很大的不同。)
还可以在虚拟环境中(由pyenv-virtualenv轻松管理)进行所有操作。
答案 1 :(得分:0)
最新版本的Pyinstaller仅支持Python 2.7、3.5–3.7。如果您降级到Python 3.7,它将起作用!