13

我对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

我只是在尝试中如此偏离,还是只是缺少一个简单的链接?

谢谢你的帮助。

4

3 回答 3

13

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

pipenv install -d pyinstaller包装前使用。

于 2018-06-04T02:28:38.390 回答
5

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

如果我在全球范围内安装依赖项,我可以发送 exe。

现在,我将制作一个构建机器来处理下载依赖项和构建 exe。

于 2018-02-21T18:25:39.103 回答
4

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

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

$ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py
于 2020-01-11T01:03:57.813 回答