问题描述

出于种种需要,系统内可能安装了多了python运行环境,如:

  1. python.org 上下载的 Python 2.7 32bit(用于使用某些只支持32位的第三方库)
  2. ArcGIS 所用的 Python 2.7 32bit(以及 Python 2.7 64bit,如果安装了64位后台地理处理)
  3. Anaconda with Python 2 和/或 Anaconda with Python 3
  4. WinPython 等其他 Python 发行版

而默认情况下,即使系统变量PATH内填写了多了python.exe所在的路径,cmd内执行python的时候也只会执行所找到的第一个。另外,为了避免与ArcGIS冲突、影响ArcGIS内Python环境的使用,在安装Anaconda的时候取消勾选 Add Anaconda to my PATH environment varialbeRegister Anaconda as my default Python 2.7。这样的话,运行Anaconda命令行就只能从开始菜单打开相应的快捷方式了,而不能直接在文件夹内Shift+鼠标右键,打开命令行即用了。

Anaconda
Anaconda

解决方案

通过添加相应的注册表项,可以在右键菜单内添加一项“在此处打开 Anaconda 命令行”Anaconda2 Prompt Here
具体步骤如下(假设Anaconda安装在 D:\Anaconda2\ ):
1. 在注册表 HKEY_CLASSES_ROOT\Directory\Background\shell\ 下新建一项 Anaconda2,默认值为 Anaconda2 Prompt Here (此值为菜单项显示名称,可以自行修改)。在Anaconda2下新建字符串值Icon,数据为D:\Anaconda2\Menu\Iconleak-Atrous-Console.ico
如果想要在同时按下Shift和鼠标右键才出现菜单项,而不是直接鼠标右键就出现,就在Anaconda2下新建字符串值Extended,数据留空。
2. 在Anaconda2下新建一项command,默认值填入cmd.exe /s /k "title Anaconda2" && D:\Anaconda2\Scripts\activate.bat D:\Anaconda2

除了手动打开regedit.exe注册表编辑器执行以上操作的方法外,也可以将以下代码用记事本保存到.reg后缀的文件中,然后双击打开reg文件即可自动导入相应注册表内容。注意根据Anaconda的实际安装路径进行修改。

1
2
3
4
5
6
7
8
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\Anaconda2]
@="Anaconda2 Prompt Here"
"Icon"="D:\\Anaconda2\\Menu\\Iconleak-Atrous-Console.ico"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Anaconda2\command]
@="cmd.exe /s /k \"title Anaconda2\" && D:\\Anaconda2\\Scripts\\activate.bat D:\\Anaconda2"

使用效果

在任意文件夹内空白处点击鼠标右键,效果如下:

文件夹右键菜单
文件夹右键菜单

点击Anaconda2 Prompt Here后,在打开的窗口内执行python,打开的就是Anaconda的python解释器了。

Anaconda命令提示行窗口
Anaconda命令提示行窗口

而如果此时在文件夹右键菜单内打开系统的命令行并执行python,则打开的是在系统变量PATH内所指定的python解释器,与新添加的Anaconda命令行两者独立。