在使用Python2的共享PC上运行Python3吗?安装和运行冲突,还原为Py2库

时间:2018-11-01 00:50:36

标签: python batch-file anaconda pyvenv

因此,我编写了许多要在共享工作计算机上运行的Python3脚本。这台计算机上安装了python2.7,以及许多计划的2.7脚本,我必须确保这些脚本保持不变。因此,我认为我可以保留一种可移植的或虚拟的python3环境,用于我的脚本。

如果我尝试的内容有所调整或我没有考虑的新方法,将不胜感激。也很抱歉,想发表较长的帖子。


我尝试过的事情:

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 site-package目录:

> 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 site-packages文件夹中有一个six.py。我尝试过不同版本的Winpython,没有运气。 (理想情况下,如果有人在这里指出一个简单的命令,我可能会解决这个问题,那就太好了。)

仅供参考,如果我从捆绑的“ WinPython Command Prompt.exe”运行python,则确实是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:

好吧,如果我读过这篇文章,我承认我在这里有点天真: Why virtualenv relies on the global python instead of the local one, after being pulled?看来我将遇到与上述相同的问题。

在上一篇文章How to run a python script locally in a virtual environment on someone elses windows machine and have it consistently work?中,一次使用pyinstaller的答案很有用,但是我现在想在同一台计算机上运行很多脚本,因此每个脚本需要500MB +的软件包太麻烦了。

2 个答案:

答案 0 :(得分:1)

选项3 virtualenv是我要使用的。能够从@Declan的注释中设置环境变量非常好,但是我认为即使您没有python版本问题,使用virtualenv也是一个好主意。它可以使您的全局python环境保持整洁,可以实现某种供应等。

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

无关的注释:Python 2将在2020年弃用。

答案 1 :(得分:1)

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

将引号分配给变量也不是最佳实践。您可以使用它们来保护变量值中的特殊字符,这还有助于避免在变量值的末尾添加空格。

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