pipenv和pyinstaller不包装依赖项

Mit*_*phy 7 python pyinstaller pipenv

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

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

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

pipenv run python iot.py
Run Code Online (Sandbox Code Playgroud)

它有一个依赖:

from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
Run Code Online (Sandbox Code Playgroud)

我尝试编译项目如下:

pipenv run pyinstaller --onefile iot.py
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢你的帮助.

Nat*_*let 7

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

pipenv install -d pyinstaller包装前使用.


Mit*_*phy 5

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

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

现在,我将构建一个可处理下载依赖关系和构建exe的构建机器。


小智 5

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

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

$ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py
Run Code Online (Sandbox Code Playgroud)