Python 来自 Powershell 的 2 和 3

Python 2 and 3 from Powershell

我使用 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

我已经尝试了所有我知道的或在这里阅读过的关于 SO 的内容,但我尝试过的任何方法都无法解决问题。我不确定这是否有帮助,但这是我的 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

从您的 PATH 变量看来,您创建了名称为 "p27" 的 py27 环境 尝试 'activate p27' 您始终可以通过查看 conda 安装文件夹中的 "envs" 目录来仔细检查环境名称。

我决定用以下解决方案结束这个问题:使用 Cmd.exe 或使用 PowerShell 和 Bill Stewart 的 Invoke-CmdScript(见评论)。首先,使用 Command Prompt (Cmd.exe):

的更简单的解决方案
# to activate
C:\Users\me\> activate py2

# to deactivate and return to Python 3.5
C:\Users\me\> deactivate

这会激活我使用 conda 创建的 Python 2.7 环境。现在,对于 Powershell 版本。首先,转到 site 并下载 Environment.ps1 脚本。对我来说,它下载为文本文件,所以我打开文件,删除 .txt 扩展名并将其替换为 .ps1。因此,假设我将 Environment.ps1 保存在以下目录 C:\Users\user_name\AppData\Local\invoke_cmdscript 中。采用此路径并将其添加到环境变量表单中的 PATH 用户变量中。现在,输入 PowerShell window:

的命令
# dot-source my file
. Environment.ps1

# activate 2.7 environment (if not in the directory of activate.bat, specify full path)
Invoke-CmdScript .\activate.bat py2


# deactivate 2.7 environment (same note about current directory and full paths)
Invoke-CmdScript .\deactivate.bat    

如果你想在每次输入 python3 时从 python 3 到 运行,并且 python 2 到 运行 每次键入 python2:

根据你的可执行文件的位置,简单地做一些别名 使用以下代码:

对于 python2:

设置别名python2 C:\Users\yourusername\python2location\python.exe

对于 python3:

设置别名python3 C:\Users\yourusername\python3location\python.exe

要了解如何使它们永久化,请查看我在 following page

的回复

如果你喜欢 powershell 而不是 cmd 而不处理更改 'stuff' 的解决方法是键入:

cmd #to get internally into command prompt from ps
activate envname
powershell #to get back