怎么添加python环境变量_如何添加和删除系统的环境变量“PATH”?

这里有一些类似于jaraco.windows项目中的代码的东西。与此类似,只使用内置的Python模块—因此不需要首先下载和安装pywin32扩展。另外,它与python2.6+和3.x兼容,支持Unicode环境变量和值(本例中是目录路径)。在

请注意,更改永久性系统级环境变量需要Windows管理员权限。在import ctypes

from ctypes.wintypes import HWND, UINT, WPARAM, LPARAM, LPVOID

LRESULT = LPARAM # synonymous

import os

import sys

try:

import winreg

unicode = str

except ImportError:

import _winreg as winreg # Python 2.x

class Environment(object):

path = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'

hklm = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)

key = winreg.OpenKey(hklm, path, 0, winreg.KEY_READ | winreg.KEY_WRITE)

SendMessage = ctypes.windll.user32.SendMessageW

SendMessage.argtypes = HWND, UINT, WPARAM, LPVOID

SendMessage.restype = LRESULT

HWND_BROADCAST = 0xFFFF

WM_SETTINGCHANGE = 0x1A

NO_DEFAULT_PROVIDED = object()

def get(self, name, default=NO_DEFAULT_PROVIDED):

try:

value = winreg.QueryValueEx(self.key, name)[0]

except WindowsError:

if default is self.NO_DEFAULT_PROVIDED:

raise ValueError("No such registry key", name)

value = default

return value

def set(self, name, value):

if value:

winreg.SetValueEx(self.key, name, 0, winreg.REG_EXPAND_SZ, value)

else:

winreg.DeleteValue(self.key, name)

self.notify()

def notify(self):

self.SendMessage(self.HWND_BROADCAST, self.WM_SETTINGCHANGE, 0, u'Environment')

Environment = Environment() # singletion - create instance

PATH_VAR = 'PATH'

def append_path_envvar(addpath):

def canonical(path):

path = unicode(path.upper().rstrip(os.sep))

return winreg.ExpandEnvironmentStrings(path) # Requires Python 2.6+

canpath = canonical(addpath)

curpath = Environment.get(PATH_VAR, '')

if not any(canpath == subpath

for subpath in canonical(curpath).split(os.pathsep)):

Environment.set(PATH_VAR, os.pathsep.join((curpath, addpath)))

def remove_envvar_path(folder):

""" Remove *all* paths in PATH_VAR that contain the folder path. """

curpath = Environment.get(PATH_VAR, '')

folder = folder.upper()

keepers = [subpath for subpath in curpath.split(os.pathsep)

if folder not in subpath.upper()]

Environment.set(PATH_VAR, os.pathsep.join(keepers))

示例用法:

^{pr2}$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值