为什么Python子进程可以运行不在路径中的命令?

为什么Python子进程可以运行不在路径中的命令?,python,windows,cmd,Python,Windows,Cmd,我想使用Python的子进程。检查\u output以检查命令Python是否位于PATH及其版本中。有趣的是,check\u output能够运行命令python,即使它不在路径中: C:\Users\Aivar\Desktop>set PATH=blahblah C:\Users\Aivar\Desktop>python--version “python”未被识别为内部或外部命令, 可操作的程序或批处理文件。 C:\Users\Aivar\Desktop>C:\python35\python

我想使用Python的
子进程。检查\u output
以检查命令
Python
是否位于
PATH
及其版本中。有趣的是,
check\u output
能够运行命令
python
,即使它不在
路径中:

C:\Users\Aivar\Desktop>set PATH=blahblah
C:\Users\Aivar\Desktop>python--version
“python”未被识别为内部或外部命令,
可操作的程序或批处理文件。
C:\Users\Aivar\Desktop>C:\python35\python-C^
更多“导入子流程^
更多?打印(子流程检查输出(['python','--version'])”
b'Python 3.5.1\r\n'
C:\Users\Aivar\Desktop>C:\python35\python-C^
更多“导入操作系统;打印(os.environ['PATH'])”
布拉布拉赫

有人能解释一下发生了什么吗?

是否父可执行文件的位置(在我的例子中是c:\python35\python
)会影响命令的搜索?有人能证实这一点吗?请尝试检查
子流程。检查输出(['echo','%CD%')
返回以查看您的工作目录。@JoeZocker,您的代码片段显示工作目录与我执行Python的目录相同,shell提示符中显示的内容总是首先检查应用程序目录,然后检查工作目录,
%SystemRoot%\System32
%SystemRoot%
,然后是
路径
目录。如果为Python定义了一个目录,则可以从命令提示符运行
start Python
,或者让cmd使用当前控制台窗口并等待,例如,
start/b/w Python-c“导入系统;打印(系统可执行)”
。在您的情况下,您可以使用
reg add“HKCU\Software\Microsoft\Windows\CurrentVersion\App path\python.exe”/ve/d“\”C:\Python35\python.exe\”
从命令提示符添加此键。是否父可执行文件的位置(在我的情况下是
C:\Python35\python
)会影响命令的搜索?有人能证实这一点吗?请尝试检查
子流程。检查输出(['echo','%CD%')
返回以查看您的工作目录。@JoeZocker,您的代码片段显示工作目录与我执行Python的目录相同,shell提示符中显示的内容总是首先检查应用程序目录,然后检查工作目录,
%SystemRoot%\System32
%SystemRoot%
,然后是
路径
目录。如果为Python定义了一个目录,则可以从命令提示符运行
start Python
,或者让cmd使用当前控制台窗口并等待,例如,
start/b/w Python-c“导入系统;打印(系统可执行)”
。在您的情况下,您可以使用
reg add“HKCU\Software\Microsoft\Windows\CurrentVersion\App path\python.exe”/ve/d“\”C:\Python35\python.exe\”
从命令提示符添加此密钥。