(填写评论的详细信息以做出单独的答案)
首先,无论您做什么,都不会在任何PATH中检查相对路径(包含斜杠的路径)。它们仅相对于 当前工作目录
。如果您需要解析相对路径,则必须手动搜索PATH,或者对PATH进行修改以使其包含子目录,然后按照下面的建议使用命令名即可。
如果要 相对于Python脚本的位置 运行程序,请使用
__file__并从那里查找程序的绝对路径,然后使用中的绝对路径
Popen。
其次,Python错误跟踪器中存在一个有关Python如何处理裸命令(无斜杠)的问题。基本上,在UNIX
/ Mac
Popen使用
os.execvp时调用
shell=False,它看起来在其价值的手段
PATH,因为它是在Python的推出
也没有改变的量
os.environ会帮你解决这个问题。此外,在带有的Windows上
shell=False,它根本不关注PATH,而只会相对于当前工作目录进行查找。
如果您只需要路径评估,而又不是真的想通过shell运行命令行,并且在UNIX上,建议您使用
env代替
shell=True,如中所述
Popen(['/usr/bin/env','progtorun', other, args],...)。这使您可以将不同的PATH传递给
env进程,该进程将使用它来查找程序。它还避免了外壳元字符的问题和通过外壳传递参数的潜在安全问题。显然,在Windows(几乎是唯一没有的平台
/usr/bin/env)上,您将需要做一些不同的事情。



