我正试图从python程序启动一个exe文件(exe文件是使用visual studio编译的c ++项目的输出)。在此c ++项目的属性(配置 - > properties-> debugging->环境)中
中的以下设置 (PATH = %PATH%;lib\testfolder1;lib\testfolder2)
给出。
有没有办法将路径环境变量设置为
在python程序中?
提前感谢您的重播
答案 0 :(得分:1)
您可以使用以下几种方法更新PATH:
import sys
sys.path += ["c:\\new\\path"]
print sys.path
或
import os
os.environ["PATH"] += os.pathsep + os.pathsep.join(["c:\\new\\path"])
print os.environ["PATH"]
答案 1 :(得分:0)
这是我创建的解决方案。它将检查路径是否已经存在,如果没有,那么它会将它写入当前用户和机器的注册表。
我已经测试过当前进程没有更新的环境,但是会更新从Run命令启动的新命令行。
请注意,创建新窗口时,它将具有更新的路径值。
def AppendWindowsPath(path):
def AddPathInRegistry(HKEY, reg_path, new_path):
reg = None
key = None
try:
reg = ConnectRegistry(None, HKEY)
key = OpenKey(reg, reg_path, 0, KEY_ALL_ACCESS)
path_string, type_id = QueryValueEx(key, 'PATH')
path_list = [f.strip("\r\n") for f in path_string.split(';') if f]
if new_path in path_list:
print(new_path + " is already in %PATH%")
return "ALREADY_IN_ENVIRONMENT"
print("Adding " + new_path + " to %PATH%")
SetValueEx(key, 'PATH', 0, REG_EXPAND_SZ, path_string + ";" + new_path)
return "UPDATED_PATH"
except Exception as e:
print("ERROR while executing registry edit with " + str(HKEY) + "/" + reg_path)
return "ERROR"
finally:
if key: CloseKey(key)
if reg: CloseKey(reg)
# Add the path to the current machine
result_machine = \
AddPathInRegistry(HKEY_LOCAL_MACHINE,
r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
path)
# Update the path for the current user.
result_user = \
AddPathInRegistry(HKEY_CURRENT_USER, r'Environment', path)
if ("UPDATED_PATH" in result_machine) or ("UPDATED_PATH" in result_user):
# Updates Environment.
win32gui.SendMessage(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 'Environment')
答案 2 :(得分:0)
重新发布Yaron的答案,但删除了sys.path。就像在他的评论中一样,sys.path用于模块搜索,而不是命令搜索。 PATH用于命令搜索。
import os
os.environ["PATH"] += os.pathsep + os.pathsep.join(["c:\\new\\path"])
print os.environ["PATH"]