我是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
在我的尝试中,我是这样的,还是只是一个简单的缺失链接?
感谢您的帮助。
答案 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