如何使用pyinstaller将包转换为exe?

时间:2017-01-19 00:36:38

标签: python windows python-2.7 pyinstaller software-packaging

我有一个开源的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进行分析的包。

我错过了什么?

3 个答案:

答案 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