您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python子进程Popen环境PATH?

python子进程Popen环境PATH?

(填写评论的详细信息以做出单独的答案)

首先,无论您做什么,都不会在任何PATH中检查相对路径(包含斜杠的路径)。它们仅相对于 当前工作目录 。如果您需要解析相对路径,则必须手动搜索PATH,或者对PATH进行修改以使其包含子目录,然后按照下面的建议使用命令名即可。

如果要 相对于Python脚本的位置 运行程序,请使用__file__并从那里查找程序的绝对路径,然后使用中的绝对路径Popen

其次,Python错误跟踪器中存在一个有关Python如何处理裸命令(无斜杠)的问题。基本上,在UNIX / MacPopen使用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)上,您将需要做一些不同的事情。

python 2022/1/1 18:44:17 有302人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶