python - 添加到 PATH 以供以后在同一脚本中与 os.system 或 subprocess.Popen 一起使用
问题描述
假设它还"D:\Temp\Subfolder\mytest.exe"
没有在 PATH 中。我试过了:
import os, sys, subprocess
sys.path.append("D:\Temp\Subfolder") # 1
os.environ['PATH'] += "D:\Temp\Subfolder" # 2
但在这两种情况下,这都失败了:
os.system('mytest')
subprocess.Popen('mytest')
问题:如何为当前运行的进程设置 PATH ,这样os.system
和subprocess.Popen
(或导入库调用的那些命令,这是我的用例)不会失败?
PS:我正在寻找一种解决方案,而无需使用 Windows 的 GUI 手动编辑环境变量:控制面板 > 系统 > 高级系统设置 > 环境变量 > ...
解决方案
正如@Jay 在评论中提到的,解决方案是:
os.environ['PATH'] += os.pathsep + r"D:\Temp\Subfolder"
(这假设环境变量PATH
已经存在;之前检查它可能很有用)
事实上,os.environ['PATH']
是一个字符串而不是一个列表(这是我最初的想法)。
然后,两者:
os.system('mytest')
subprocess.Popen('mytest')
工作。
注意:这些都不起作用:
sys.path.append(os.pathsep + "D:\Temp\Subfolder")
sys.path.append("D:\Temp\Subfolder")
推荐阅读
- android - 无法使用 com.tns 查找课程
- sql - 将姐妹表值应用于主表中的所有父/子关系
- automation - 如何使用 botium 绑定更改 Botium 测试的测试套件名称。当前它是默认名称
- linux - 不使用pop操作读取数据有优势吗?
- ios - iOS:隐藏内容标签时如何让容器视图自动缩小其高度?
- php - 来自 Visual Studio Code 中 phpcs 的“预期 1 个空格...”消息
- r - dplyr 将两个数据集与条件连接在一起
- reactjs - 如何防止用户返回 react-router-dom?
- java - 为什么 Map.put() 会覆盖现有键/值对中的现有值?
- python - 如何计算 3 个时间序列的广义矩,即 3 个时间序列之间的 coskew 和 4 个时间序列之间的 cokurtosis 等