使用Pyinstaller创建的二进制文件失败:使用Pipenv时,“没有名为...的模块”,“无法执行脚本...”

时间:2018-10-11 13:44:19

标签: python pyinstaller pipenv

从简单的Python脚本创建可执行文件时,Pyinstaller成功完成。但是,当尝试运行可执行文件时,它失败,并显示ModuleNotFoundError

Traceback...
ModuleNotFoundError: No module named 'git'
[26228] Failed to execute script xyz

我已经通过Pipenv安装了gitpython。为什么捆绑不正确?

2 个答案:

答案 0 :(得分:0)

这里可能的问题是使用全局Pyinstaller安装。此安装不知道通过Pipenv下载的pip软件包。

我在Pipenv shell中再次尝试了,效果很好:

pipenv shell
pip install pyinstaller
pyinstaller script.py -F

现在该模块已正确捆绑。

答案 1 :(得分:0)

@vauhochzett提供的答案几乎是正确的,但需要进行如下修改。不用在pipenv中使用pip来安装pyinstaller,而是使用pipenv本身来安装pyinstaller。

这意味着您将需要在创建的每个pipenv中安装pyinstaller,但是它将为您使用的每个venv正确整理导入路径。

使用pip安装pyinstaller时,导入路径有些混乱,但是当使用pipenv在venv中安装模块时,一切都按预期工作。

$ pipenv install pyinstaller
$ pipenv run pyinstaller script.spec