将 pyinstaller 与两个 python 环境一起使用

Posted

技术标签:

【中文标题】将 pyinstaller 与两个 python 环境一起使用【英文标题】:Using pyinstaller with two python environments 【发布时间】:2018-05-17 10:10:43 【问题描述】:

我正在使用 pyinstaller 将一个 .py 文件打包到 .exe 中。我的 WIN10 64 位计算机上有两个 Python3 环境。一个来自Anaconda另一个是Python3-32bit,单独安装。此 .py 文件由 Anaconda Python 环境生成。 安装 pyinstaller 后,我将环境变量 PATH 设置为:`

PATH=PATH;C:\Anaconda3\Scripts;C:\Python35-32\Scripts;

但是,当我输入 pyinstaller file.py 时,它会引发很多警告:

似乎pyinstaller 在 Python35-32 的 lib 文件夹而不是 Anaconda 中搜索依赖项。如何让它在 Anaconda 的 lib 文件夹下搜索依赖项? `

【问题讨论】:

【参考方案1】:

您是使用 pip 还是使用 (ana)conda 安装 pyinstaller?如果是,请检查 pip 是 python3-32bit 还是 anaconda 的:

pip -V

这将告诉您 pip 以及 pyinstaller 是否安装在 32 位解释器上,因此它为什么会在该特定文件夹中查找。

解决方案是使用 conda 或在 anaconda IDE 中安装 pyinstaller。可能需要从 python3-32bit 卸载 pyinstaller

【讨论】:

嗨@dzman。我先在 python3-32bit 上安装了pyinstaller。然后使用conda install 再次安装它。我的pip -V 给了我'来自 c:\python35-32\lib\site-packages\pip (python 3.5) 的 pip 10.0.1'。接下来我该怎么办? 我认为问题是从提示符运行 pyinstaller 默认为 python32 版本,所以也许使用 pip 卸载那个 python 32 ? 你是对的。我卸载了 python3-32bit pyinstaller,然后 pyinstaller 在 Anaconda 的脚本文件夹中搜索。这是否意味着如果我要打包另一个python3-32bit提供的.py文件,我必须卸载Anaconda的pyinstaller并重新安装python3-32的pyinstaller? 您应该能够运行 conda 的 pyinstaller 来打包该 py 文件。然而,Pyinstaller 将使用来自 anaconda 的模块。如果要使用安装在 python35-32 中的依赖项,要做的事情是使用 python -m venv test-env 为 python35-32 创建一个虚拟环境,然后激活该虚拟环境,安装 pyinstaller 和所有必需的模块,然后使用它运行 pyinstaller虚拟环境

以上是关于将 pyinstaller 与两个 python 环境一起使用的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller 还原python代码的方法

如何将 Subprocess.popen() 与 pyinstaller 一起使用?

Python Pyinstaller MSYS 问题与 PyQtWebKit

python3使用pyinstaller打包apscheduler出的错

Python PyInstaller安装和使用教程(详解版)

如何使用pyinstaller打包python文件为exe文件