所以我写了一堆我想在共享工作计算机上运行的 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 站点包目录:
> 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。我尝试了不同版本/安装的 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 在被拉出后依赖于全局python 而不是本地python?看起来我会遇到与上述相同的问题。
从我之前的帖子如何在别人的 Windows 机器上的虚拟环境中本地运行 python 脚本并让它始终如一地工作?使用 pyinstaller 的答案一次性有用,但我现在想在同一台计算机上运行很多脚本,所以每个脚本 500MB+ 的包太麻烦了。