【发布时间】:2016-07-04 07:14:26
【问题描述】:
我使用 Anaconda 安装了 Python 3.5,使用以下命令安装了 2.7:
conda create -n py27 python=2.7 anaconda
这成功地将2.7 安装为带有 Anaconda3 文件夹的单独环境:
# original installation path for 3.5
C:\Users\username\AppData\Local\Continuum\Anaconda3
# path for 2.7 after conda create -n is run
C:\Users\username\AppData\Local\Continuum\Anaconda3\envs\py27
只要我使用像 Spyder 或 IPython Notebook 这样的 IDE,我可以在其中选择哪个 Python 版本,这很有效。但是,我无法在 PowerShell 中使用 py27 (Python 2.7)。我试过使用:
activate py27
然而python 命令仍会触发3.5 和py27 会导致此错误:
py27 : The term 'py27' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1 + py27
+ ~~~~
+ CategoryInfo : ObjectNotFound: (py27:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
我已经尝试了我所知道或在此处阅读的所有内容,但我尝试过的任何方法都无法解决问题。我不确定这是否有帮助,但这是我的 PATH 变量供参考:
C:\Users\username\AppData\Local\Continuum\Anaconda3;C:\Users\username\AppData\Local\Continuum\Anaconda3\Scripts;C:\Users\username\AppData\Local\Continuum\Anaconda3\Library\bin;%SystemRoot%\system32\WindowsPowerShell\v1.0\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;[stuff in between];C:\Users\username\AppData\Local\Continuum\Anaconda3\envs\p27;C:\Users\username\AppData\Local\Continuum\Anaconda3\envs\p27\Scripts\;C:\Users\username\AppData\Local\Continuum\Anaconda3\envs\p27\Library\bin
【问题讨论】:
-
什么是
activate?如果是批处理文件,它设置的环境变量不会传播到 PowerShell。要解决此问题,您可以使用 this article 中的Invoke-CmdScript函数。 -
@Bill_Stewart,
activate是我在 SO 上找到的命令,用于在 Anaconda3 安装中“激活”2.7环境。这是我在论坛上看到的最常见的解决方案。然而,即使命令在 PowerShell 中运行没有问题,它实际上也不允许我从命令行运行2.7。这是一个示例帖子here -
再次重申:如果
activate是一个批处理文件(cmd.exe shell 脚本)并且它设置了环境变量,您将需要使用文章中的Invoke-CmdScript函数来运行它。 -
以不同的方式概括:PowerShell可以运行批处理文件,但是如果批处理文件设置了应该在批处理文件终止后保留的环境变量值,则所述批处理文件将无法在PowerShell中正常工作,因为运行批处理文件的 cmd.exe 进程终止。解决方法是“捕获”批处理文件所做的环境变量更改,然后将更改传播到 PowerShell。这就是上述文章中
Invoke-CmdScript函数的用途。 -
@Bill_Stewart,我将 Environment.ps1 目录添加到我的 PATH 变量中,对 Environment.ps1 文件进行点源,这使我可以访问
Invoke-CmdScript函数。此时,我运行了命令Invoke-CmdScript .\activate.bat。我得到'.\activate.bat' is not recognized as an internal or external command, operable program or batch file.作为回报。
标签: python python-2.7 powershell python-3.x anaconda