我有一个开源的python命令行程序,它运行在Python 2.7,Python3 +上,并且是跨平台的。
我正在尝试将其打包成一个可执行文件,以便我的Windows用户更轻松。这个软件包的源代码在Github上发布:https://github.com/stormpath/stormpath-cli
我正在尝试使用pyinstaller打包我的Python程序,但是遇到了问题。
我正在从Windows 8框中运行以下命令:
$ pyinstaller --onefile setup.py
这为我成功生成了一个EXE文件,但是当我去运行它时,我收到以下错误:
Traceback (most recent call last):
File "setup.py", line 4, in <module>
File "c:\python27\Lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\setuptools\__init__.py", line 160, in <module>
File "site-packages\setuptools\monkey.py", line 93, in patch_all
File "site-packages\setuptools\monkey.py", line 145, in patch_for_msvc_specialized_compiler
File "importlib\__init__.py", line 37, in import_module
ImportError: No module named msvc
Failed to execute script setup
出于测试目的,为了帮助缩小问题范围,我创建了一个test.py
脚本,其中包含以下代码:
print('hello, world!')
然后将其打包成一个exe:
$ pyinstaller --onefile test.py
当我运行这个生成的exe时,一切都很棒! Hello world按预期输出。
我相信发生的事情是我没有告诉pyinstaller如何正确'检测'我的项目是python包,而不是单个文件脚本。
我已经阅读了很多文档,并且已经搜索过了,但还没有找到一种方法来指定pyinstaller进行分析的包。
我错过了什么?
答案 0 :(得分:0)
虽然我认为这是一件非常合理的事情,但看起来PyInstaller并不支持从包中构建应用程序(__main__.py
)。
请参阅https://github.com/pyinstaller/pyinstaller/issues/2560。
作为一种解决方法,您可以编写一个与您的__main__.py
完全相同的小存根(在包之外)。然后指向PyInstaller。
答案 1 :(得分:0)
我认为您忘记了“ pyinstaller -w --onefile test.py”。您忘记了“ -w”。
答案 2 :(得分:0)
首先安装pyinstaller
pip install pyinstaller
要创建exe可执行文件夹,只需运行以下命令:
pyinstaller exam_browser.py
如果您想要带有徽标的单个 exe 文件,请运行以下命令:
pyinstaller exam_browser.py --onefile -F --icon logo.ico