【问题标题】:Using Python and Anaconda on the same machine在同一台机器上使用 Python 和 Anaconda
【发布时间】:2015-12-23 22:45:06
【问题描述】:

我刚刚在 C:\Python34 上安装旧 Python 的同一台计算机上的 C:\Anaconda3 上安装了 Anaconda。

有一些工具可以管理different version of Pythondifferent 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 会被 PythonAnaconda 忽略。

在执行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 中没有任何蟒蛇,也没有配置PYTHONPATHPYTHONHOME
  • 在 Python 环境中运行 Anaconda 应用程序在 sre_compile.py 中崩溃。在 Anaconda 环境中运行 Python 应用程序在 _collections_abc.py 中崩溃。为了消除错误,我必须设置所有 3 个变量。
  • 我明白了。我没有设置任何一个,这就是为什么我从来没有这个问题。无论如何,您能否展示发生这种情况的脚本:“在执行 python 的同一脚本上使用 set 会导致 python 立即崩溃”?
  • 我现在才注意到你使用setx。那就是问题所在。请参阅下面的答案。

标签: python windows environment-variables anaconda


【解决方案1】:

您正在使用SETX,它不会更改环境变量。它将环境变量值保存在注册表中,以供将来的过程使用。

要更改当前进程中的值,请使用SET

set PATH="[...]C:\Anaconda3[...]"
set PYTHONPATH="C:\Anaconda3"
set PYTHONHOME="C:\Anaconda3"

【讨论】:

  • 我试过了,正如问题中所解释的那样,但它不起作用。
  • 抱歉,不清楚,但我尝试了setxsetsetx 对此会话没有影响,但它允许它在下一个会话中工作,而set 它导致它在此会话中崩溃,而对下一个会话没有影响。
  • 这不适用于后续流程。你可以同时使用SETSETX 来覆盖两者,但老实说,如果你需要使用SETX,我相信你迟早会遇到问题。例如,如果您尝试同时运行多个 python,那将无法正常工作。
  • 我知道,我试过了,但是由于 set 不起作用,并且在安装 Anaconda 后服务器是一块砖头,我发现了 setx 和双重执行的解决方案。现在我将尝试将所有库添加到 Anaconda 并让旧应用程序在 Anaconda 中运行,但同时这是我找到的唯一解决方案。
  • 这是否有可能:set PATH="[...]C:\Anaconda3[...]" 实际上导致路径上的两条蟒蛇?我的意思是,其中一个在... 部分?
猜你喜欢
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 2014-08-29
  • 2016-06-18
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
相关资源
最近更新 更多