pipenv和pyinstaller不包装依赖项

时间:2018-02-19 23:49:27

标签: python pyinstaller pipenv

我是python的新手我正在尝试创建一个在pipenv中运行的python项目的可执行文件。但是,当我尝试使用pyinstaller编译和运行代码时,它找不到任何依赖项,因为它们没有全局安装。我不想在全局安装它们,这应该是一个可部署的版本,除了exe之外不需要任何设置。

我错过了什么吗?这是否是正确的方法?

我可以像这样轻松地运行项目:

pipenv run python iot.py

它具有依赖性:

from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient

我尝试编译项目如下:

pipenv run pyinstaller --onefile iot.py

它创建了一个无法找到导入模块的可执行文件。

Traceback (most recent call last):
  File "iot.py", line 18, in <module>
ImportError: No module named AWSIoTPythonSDK.MQTTLib
[48823] Failed to execute script iot

在我的尝试中,我是这样的,还是只是一个简单的缺失链接?

感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

这是因为您全局安装了pyinstaller。

在打包前使用pipenv install -d pyinstaller

答案 1 :(得分:4)

我发现pyinstaller不会在pipenv中包装依赖项。

如果我全局安装依赖项,我可以发送exe。

现在,我将构建一个处理下载依赖项并构建exe的构建机器。

答案 2 :(得分:3)

搜索所需的模块时,您可以告诉pyinstaller查找pipenv创建的虚拟环境。

$ pipenv --venv
path\to\.virtualenvs\project

$ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py