为什么Python子进程可以运行不在路径中的命令?
我想使用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
子进程。检查\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\”
从命令提示符添加此密钥。