运行 Python3 在与 Python2 共用一台电脑?安装和 运行 冲突,恢复为 Py2 库

Running Python3 on a shared PC with Python2? Installation and running conflicts, reverts to Py2 libraries

所以我写了一堆 Python3 脚本,我想 运行 在共享的工作计算机上。这台计算机上安装了 python2.7,还有许多预定的 2.7 脚本,我必须确保它们继续保持不变。所以我想到了一种便携式或虚拟 python3 环境,我可以只为我的脚本保留这些环境。

如果对我尝试过的事情进行了调整或者我没有考虑过的新方法,那将不胜感激。也很抱歉长post,想要具体。


我试过的:

1) 安装便携版 python3 (WinPython 3.7)。

然后在 .bat 文件到 运行 我的脚本中,我输入:

SET PYTHONPATH = "C:\Localdata\...\WPy-3702\python-3.7.0.amd64\Lib\site-packages"
"C:\Localdata\...\WPy-3702\python-3.7.0.amd64\python.exe" test.py

其中 test.py 就是:

import six
print(six.__file__)

现在这在我自己的笔记本电脑上运行良好,返回 winpython 站点包目录:

> C:\Localdata\...\WPy-3702\python-3.7.0.amd64\Lib\site-packages\six.py

但是,在上述所有条件相同的情况下,共享计算机恢复为已安装的 2.7 库。

> C:\Program Files (x86)\Python27\lib\site-packages\six.py

这当然打破了它,似乎是我问题的根源。我已经检查过,在 winpython 站点包文件夹中有一个 six.py。我尝试了不同的 versions/installations 或 winpython 但没有成功。 (理想情况下,如果有人在这里指出我缺少的一个简单命令可以解决这个问题,那就太好了。)

仅供参考,如果我 运行 python 来自捆绑的 "WinPython Command Prompt.exe",它确实是 3.7 版,只是它不会使用本地 3.7 站点包库。 .

2) 安装 Anaconda3 并且不添加到 PATH。

安装完成,但开始菜单中只剩下 Anaconda Prompt(没有 jupyter、spyder 等),Anaconda Prompt 一打开就出错:

> 'C:\Users\...\anaconda3\Scripts\activate.bat' is not recognized as an 
internal or external command, operable program or batch file.

我在其他工作 PC 上遇到过这个问题,解决方案是删除默认 python 并重新安装 Anaconda,但正如我之前所说,我无法在不烦人的情况下接触当前的 Py2 安装很多人,所以又是一个死胡同。

(虽然安装有点失败,但 anaconda3 文件仍然安装,所以我对 anaconda3 站点包尝试了相同的 test.py+batchfile 技巧,但它做了同样的处理)。

3) 创建 Venv:

好吧,我承认我在这里有点天真,如果我读到这个: 看来我也会遇到和上面一样的问题。

根据我之前的 post How to run a python script locally in a virtual environment on someone elses windows machine and have it consistently work? 使用 pyinstaller 的答案一次性有用,但我现在有很多脚本想要 运行计算机,所以每个脚本 500MB 以上的包太麻烦了。

选项 3,virtualenv 是我的选择。很高兴您能够根据@Declan 的评论设置环境变量,但我认为使用 virtualenv 是一个非常好的主意,即使您没有 python 版本问题。它使您的全局 python 环境保持清洁,可以启用一种供应商等。

要设置新 virtualenv 的 python 版本,请使用 -p 标志。

无关说明:Python2 将在 2020 年弃用。

使用set命令时。在等号之前使用的任何 spaces 都是变量名称本身的一部分。因此,如果您想使用该变量,则必须将其引用为 %myvar % 并在末尾添加 space。

为变量分配引号也不是最佳做法。您可以使用它们来保护变量值中的特殊字符,它还有助于避免在变量值末尾尾随 spaces。

 SET "PYTHONPATH=C:\Localdata\...\WPy-3702\python-3.7.0.amd64\Lib\site-packages"