命令行中的 Python 运行错误版本?

Mic*_*x2a 7 windows python path command-line

我在 Windows 7 计算机上安装了多个版本的 Python。

我想默认运行 Python 2.7,但无论出于何种原因,python在命令行中键入都会运行 Python 2.4.5 版。我已经尝试C:\Python27按照这个问题添加到我的系统路径变量中,并手动梳理我的路径变量以确保 Python 2.4.5 没有被错误地扔进去,但这并没有解决问题。我必须输入C:\Python27\python.exe我想访问的Python的正确版本我想每一次。

我还可以检查哪些地方?如何让命令行使用正确版本的 python?

我也发现了这个,但它不适用于 Windows。

[编辑]
我的路径(用分号分隔):

C:\Program Files\Common Files\Microsoft Shared\Windows Live;
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Dell\DW WLAN Card\Driver;
C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;
C:\Program Files (x86)\Windows Live\Shared;
c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;
c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;
c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;
C:\Program Files\TortoiseGit\bin;
C:\Program Files\Java\jdk1.6.0_26\bin;
C:\Program Files\Java\jdk1.6.0_21 ;
C:\Program Files\IVI Foundation\VISA\Win64\Bin\;
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Bin\;
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Bin;
C:\Program Files\WPIJavaCV\OpenCV_2.2.0\bin;
C:\Program Files (x86)\LilyPond\usr\bin;
C:\Program Files\TortoiseSVN\bin;
C:\Program Files (x86)\doxygen\bin;
C:\Program Files (x86)\Graphviz 2.28\bin;
C:\Users\Michael\bin\Misc\cppcheck\;
C:\Program Files (x86)\Git\cmd;
C:\Python27\python.exe;
C:\Ruby192\bin;
C:\Users\Michael\AppData\Roaming\cabal\bin;
C:\Python27\; 
Run Code Online (Sandbox Code Playgroud)

[编辑 2]
运行会说明python这一点:

'import site' failed; used -v for traceback
Python 2.4.5 (#1, Jul 22 2011, 02:01:04)
[GCC 4.1.1] on mingw32
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Run Code Online (Sandbox Code Playgroud)

...并且运行python --version(如下所示)似乎是一个无法识别的选项。

(我也试过运行python -v,似乎是 Python 2.4 试图从 导入库C:\Python27\Lib,但由于遇到with语句时出现语法错误而失败,我认为这是在更高版本中添加的)

另外,我不确定它是否重要,但是上面的python版本说明了有关GCC和mingw32的内容,而运行时C:\python27\python.exe显示了这一点:

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>> 
Run Code Online (Sandbox Code Playgroud)

jmc*_*jmc 7

您需要在注册表编辑器中更新 .py 扩展名。搜索“.py”扩展名并查看(默认)关键点。大概在:

HKEY_CLASSES_ROOT/.py/(Default)
Run Code Online (Sandbox Code Playgroud)

这个键的“数据”可能是“Python.File”(见下面的截图)。 在此处输入图片说明

也可以使用它查找第二个键:

HKEY_CLASSES_ROOT/<previous_keys_data>/shell/open/command/@default
e.g.
HKEY_CLASSES_ROOT/Python.File/shell/open/command/@default
Run Code Online (Sandbox Code Playgroud)

(Default) 键包含将使用的 Python 解释器的路径。根据需要更新它以指向您要使用的那个。(见截图) 在此处输入图片说明

背景

如果您实际指定了 python 可执行文件,则在命令行上选择的 Python 解释器仅使用 PATH 环境变量。IE

python myProgram.py
Run Code Online (Sandbox Code Playgroud)

在没有实际包含“python”的情况下,命令外壳将尝试找到一个程序来打开 .py 文件(上面的第一个键)。

然后它将使用此键来查找合适的程序(第二个键)。

正如@efotinis 所说,您可以使用简单程序确定正在使用的解释器:

import sys
print sys.executable
Run Code Online (Sandbox Code Playgroud)

尝试使用以下两种方式执行此操作,以查看使用 PATH 查找您指定的可执行文件与使用命令解释器查找打开您指定的 .py 文件的程序之间的区别。

python myProgram.py
myProgram.py
Run Code Online (Sandbox Code Playgroud)


efo*_*nis 2

当您处于 Python 2.4.5 会话中时,使用它来定位所拾取的 Python.exe:

import sys
print sys.executable
Run Code Online (Sandbox Code Playgroud)

如果您想使用多个版本,则不能依赖 %PATH%。相反,您可以创建单独的批处理文件来调用您想要的版本(但请确保批处理文件本身位于 PATH 上)。例如,对于 2.7.2,您可以创建一个 PY27.BAT,其中仅包含:

@C:\Python27\Python.exe $*
Run Code Online (Sandbox Code Playgroud)