【发布时间】:2015-12-23 22:45:06
【问题描述】:
我刚刚在 C:\Python34 上安装旧 Python 的同一台计算机上的 C:\Anaconda3 上安装了 Anaconda。
有一些工具可以管理different version of Python 或different versions of Anaconda,但我找不到任何东西可以同时在同一台机器上管理不同版本的 Python 和 Anaconda。
我能够使用下面的 4 个脚本让旧应用程序在 Python 3.4 和 Anaconda 3.5 上运行新应用程序。依次双击它们中的每一个,两个应用程序运行没有问题。
但我无法制作一个脚本来同时运行这两个应用程序,甚至两个脚本都没有,一个用于第一个应用程序,一个用于第二个应用程序。知道如何解决这个问题吗?
Python1.cmd
setx PATH "[...]C:\Python34[...]"
setx PYTHONPATH "C:\Python34"
setx PYTHONHOME "C:\Python34"
Python2.cmd
cd \OldFolder
C:\Python34\python app.py
Anaconda1.cmd
setx PATH "[...]C:\Anaconda3[...]"
setx PYTHONPATH "C:\Anaconda3"
setx PYTHONHOME "C:\Anaconda3"
Anaconda2.cmd
cd \NewFolder
C:\Python34\python app.py
使用setx 有效,但前提是执行setx 的脚本和执行python 的脚本不相同(如上面的4 个脚本)。在同一脚本上使用 setx 会被 Python 或 Anaconda 忽略。
在执行python 的同一脚本上使用set 会导致python 立即崩溃。以下是脚本和错误:
PythonSet.cmd
set PATH="[...]C:\Python34[...]"
set PYTHONPATH="C:\Python34"
set PYTHONHOME="C:\Python34"
cd \OldFolder
C:\Python34\python app.py
错误
Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'
【问题讨论】:
-
我很可能遗漏了一些东西,但我没有看到问题所在。我安装了多个版本的python(其中包括Anaconda),我只需运行
path\to\python.exe app.py,它适用于每个安装。我在PATH中没有任何蟒蛇,也没有配置PYTHONPATH和PYTHONHOME。 -
在 Python 环境中运行 Anaconda 应用程序在
sre_compile.py中崩溃。在 Anaconda 环境中运行 Python 应用程序在_collections_abc.py中崩溃。为了消除错误,我必须设置所有 3 个变量。 -
我明白了。我没有设置任何一个,这就是为什么我从来没有这个问题。无论如何,您能否展示发生这种情况的脚本:“在执行 python 的同一脚本上使用 set 会导致 python 立即崩溃”?
-
我现在才注意到你使用
setx。那就是问题所在。请参阅下面的答案。
标签: python windows environment-variables anaconda