运行 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"
所以我写了一堆 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"