shutil.which()在没有附加文件扩展名的情况下找不到程序

时间:2019-05-31 17:48:57

标签: python windows shutil

尝试使用shutil.which()确定是否已安装git。从文档中,我看到Windows上的which()应该使用PATHEXT来知道搜索时要附加的文件扩展名。但是,使用解释器时会发生以下情况:

>>> import os
>>> import shutil
>>> os.getenv('PATHEXT')
'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;'
>>> shutil.which('git')
>>> shutil.which('git.exe')
'C:\\Program Files\\Git\\cmd\\git.exe'

这在使用D:\ Envs中的VirtualEnv包装器创建的虚拟环境中有什么不同。

1 个答案:

答案 0 :(得分:0)

从您的;环境变量中删除尾随PATHEXT。似乎shutil.which()对此感到困惑,并将一个空字符串解释为有效的文件扩展名,因此不会尝试附加任何文件扩展名。

此处有更多详细信息:"jupyter-kernelspec" not found while installing iqsharp however it exists on PATH