【问题标题】:pipenv and pyinstaller not packaging dependenciespipenv 和 pyinstaller 不打包依赖项
【发布时间】:2018-02-19 23:49:27
【问题描述】:

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


    【解决方案1】:

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

    打包前使用pipenv install -d pyinstaller

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        $ pipenv --venv
        path\to\.virtualenvs\project
        
        $ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py
        

        【讨论】:

          猜你喜欢
          • 2019-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-29
          • 2019-03-19
          • 2014-08-20
          • 2020-06-12
          • 1970-01-01
          相关资源
          最近更新 更多