Как сказал @Artur, вы должны либо отключить, либо включить каждое расширение по рабочему пространству. Не самое элегантное из решений.
Лучшие решения запрашивались несколько раз, см. настройки рабочего пространства для списков расширений и постоянная загрузка расширений с файлом манифеста . Эта особенность кажется желанной, но никаких реальных признаков движения по этому вопросу, кроме того, что сказал Артур, нет.
Вашим многоречивым решением является, вероятно, лучшая идея; я не полагаю, что это возможно из Python непосредственно. Эта статья предлагает иначе, с помощью временного пакетного файла:
Вы могли бы хотеть попробовать Расширения Python Win32, разработанные Mark Hammond, который включен в ActivePython (или может быть установлен отдельно). Можно изучить, как выполнить много связанных с Windows задач в книге Hammond и Robinson.
Используя PyWin32 для доступа к COM-объектам окон программа Python может использовать Свойство Среды WScript.Shell
объект - набор переменных среды.
Windows устанавливает Переменные среды от значений, сохраненных в Реестре для каждого процесса независимо.
Однако существует инструмент в Инструментах Поддержки Windows XP Service Pack 2 под названием setx.exe, который позволяет Вам изменять глобальные Переменные среды из командной строки.
Мое решение с помощью win32api:
import os, sys, win32api, win32con
'''Usage: appendenv.py envvar data_to_append'''
def getenv_system(varname, default=None):
'''
Author: Denis Barmenkov <barmenkov at bpc.ru>
Copyright: this code is free, but if you want to use it,
please keep this multiline comment along with function source.
Thank you.
2006-01-28 15:30
'''
v = default
try:
rkey = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment')
try:
v = str(win32api.RegQueryValueEx(rkey, varname)[0])
v = win32api.ExpandEnvironmentStrings(v)
except:
pass
finally:
win32api.RegCloseKey(rkey)
return v
#My set function
def setenv_system(varname, value):
try:
rkey = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment',0 ,win32con.KEY_WRITE)
try:
win32api.RegSetValueEx(rkey, varname, 0, win32con.REG_SZ, value)
return True
except Exception, (error):
pass
finally:
win32api.RegCloseKey(rkey)
return False
if len(sys.argv) == 3:
value = getenv_system(sys.argv[1])
if value:
setenv_system(sys.argv[1],value + ";" + sys.argv[2])
print "OK! %s = %s" % (sys.argv[1], getenv_system(sys.argv[1]))
else:
print "ERROR: No such environment variable. (%s)" % sys.argv[1]
else:
print "Usage: appendenv.py envvar data_to_append"