如何在Python脚本中将PATH =%PATH%设置为环境?

时间:2016-04-11 12:49:50

标签: python windows path

我正试图从python程序启动一个exe文件(exe文件是使用visual studio编译的c ++项目的输出)。在此c ++项目的属性(配置 - > properties-> debugging->环境)中

中的以下设置
     (PATH = %PATH%;lib\testfolder1;lib\testfolder2) 

给出。
有没有办法将路径环境变量设置为

  1. PATH =%PATH%
  2. lib \ testfolder1
  3. LIB \ testfolder2
  4. 在python程序中?

    提前感谢您的重播

3 个答案:

答案 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"]