我对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
我只是尝试这样还是只是缺少一个简单的链接?
感谢您的帮助。
这是因为您是全局安装的pyinstaller。
包装前使用pipenv install -d pyinstaller
。
我发现pyinstaller不会在pipenv中打包依赖项。
如果我全局安装依赖项,则可以附带该exe。
现在,我将制造一台用于处理依赖项下载和构建exe的构建机。
搜索所需的模块时,您可以告诉pyinstaller查找pipenv创建的虚拟环境。
$ pipenv --venv
path\to\.virtualenvs\project
$ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py