在python中,如何添加到windows path变量以查找可执行文件

在python中,如何添加到windows path变量以查找可执行文件,python,linux,windows,Python,Linux,Windows,我一直在寻找一种方法,在windows路径中可能没有列出的文件夹中进行python搜索。这样,如果安装的应用程序决定不在c:\program files下安装,我可以说明安装的应用程序的一些非标准位置。例如,如果unix utils安装在d驱动器或其他驱动器上 而不是一直修改windows路径。我想我可以读取注册表,找到安装它的路径,然后将其添加到python实例的搜索路径中,仍然可以找到我要查找的内容。问题是,我还需要考虑具有标准命名的预定义子文件夹 我已经搜索过了,我发现的大部分内容都与修改

我一直在寻找一种方法,在windows路径中可能没有列出的文件夹中进行python搜索。这样,如果安装的应用程序决定不在c:\program files下安装,我可以说明安装的应用程序的一些非标准位置。例如,如果unix utils安装在d驱动器或其他驱动器上

而不是一直修改windows路径。我想我可以读取注册表,找到安装它的路径,然后将其添加到python实例的搜索路径中,仍然可以找到我要查找的内容。问题是,我还需要考虑具有标准命名的预定义子文件夹

我已经搜索过了,我发现的大部分内容都与修改python路径有关,并且python找到了它的模块,但这并不是真正有用的

我也在sys.path.append中找到了一些,但是我真的找不到关于这是否适用的任何信息。我还阅读了os.path的文档,它看起来可以工作,但它似乎并不真正适合这种需要

是不是有些事情我没有做到,或者这是不可能做到的

最后一件事是它需要跨平台兼容。我可以找到自己的路径并根据需要添加它们,但只需要一种添加到路径的方法


感谢您临时添加到路径,例如:

import os import sys if sys.platform == 'win32': sep = ';' else: sep = ':' os.environ['PATH'] += sep + r'"C:\QA\Hello World"'
为什么不使用完整的分层文件名调用程序,而不是将其添加到搜索路径中呢?啊,正如所述,它并不总是在标准安装路径中。因此,在windows中,我可以从注册表中读取安装路径,然后简单地添加到路径中。我想我也可以通过编程的方式添加到windows路径,但这不是最好的方法。另一件事是,我有许多不同的命令行应用程序正在运行,简单地添加到路径中比重新编码所有内容要容易得多。我想,作为另一种方法,我可以简单地找到路径并将其添加到每个命令之前,但仍然有记录。你说的“在windows路径中可能没有列出的文件夹中进行python搜索”是什么意思?Python不会在窗口路径环境变量中搜索文件夹,它搜索的唯一对象是模块。Python在自己的
sys.path
中搜索模块,其值受PYTHONHOME和PYTHONPATH环境变量(如果存在)设置的影响
sys.path
也可以在运行时更改。好吧,如果有办法修改windows path变量,我们可以简化此操作。然而,我想问的是,当我想用python子流程模块查找可执行文件时,是否有办法让python做与修改windows path变量相同的事情。
os.pathsep
可以使用,这或多或少是我想要的。这会立即生效吗。例如,我知道修改windows路径有时并不像预期的那样。谢谢,这取决于你所说的“立即”是什么意思。您需要使用shell(如示例中所示)重新检查%PATH%并运行该程序。还要注意,在Windows上,PATH环境变量中包含空格的路径不需要被引用,因此
+r'C:\QA\Hello World'
可以。
import subprocess
proc = subprocess.Popen('hello.exe',shell=True) 
proc.wait()