pipenv和pyinstaller未打包依赖项

问题描述 投票:8回答:3

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

我只是尝试这样还是只是缺少一个简单的链接?

感谢您的帮助。

python pyinstaller pipenv
3个回答
8
投票

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

包装前使用pipenv install -d pyinstaller


5
投票

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

如果我全局安装依赖项,则可以附带该exe。

现在,我将制造一台用于处理依赖项下载和构建exe的构建机。


0
投票

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

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

$ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py
© www.soinside.com 2019 - 2024. All rights reserved.