Adding Python Information to the Windows Registry
February 19, 2003 | Fredrik Lundh
Some Python distributions add information to the Windows registry when installed. This information is used by certain tools, such as the win32allinstaller and Windows installers generated by the distutils (dead link)package.
If you’re using an unregistered Python environment, you’ll usually end up with an empty list of alternatives on the installer’s “Select Python installation to use” screen.
The following script registers the current interpreter. The script should work for Python 2.0 and later.
Note that there can be only one registered interpreter for each major Python release (e.g. 2.0, 2.1, 2,2 etc).
#
# script to register Python 2.0 or later for use with win32all
# and other extensions that require Python registry settings
#
# written by Joakim Löw for Secret Labs AB / PythonWare
#
# source:
# http://www.pythonware.com/products/works/articles/regpy20.htm
import sys
from _winreg import *
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
installpath, installpath, installpath
)
def RegisterPy():
try:
reg = OpenKey(HKEY_LOCAL_MACHINE, regpath)
except EnvironmentError:
try:
reg = CreateKey(HKEY_LOCAL_MACHINE, regpath)
SetValue(reg, installkey, REG_SZ, installpath)
SetValue(reg, pythonkey, REG_SZ, pythonpath)
CloseKey(reg)
except:
print "*** Unable to register!"
return
print "--- Python", version, "is now registered!"
return
if (QueryValue(reg, installkey) == installpath and
QueryValue(reg, pythonkey) == pythonpath):
CloseKey(reg)
print "=== Python", version, "is already registered!"
return
CloseKey(reg)
print "*** Unable to register!"
print "*** You probably have another Python installation!"
if __name__ == "__main__":
RegisterPy()
(To download, triple-click on the first line to select the entire script, and copy the text into your favourite text editor.)
Unregistering the interpreter
If you need to reverse the above, you can add the following function to the script (code provided by Martin Lamar):
def UnRegisterPy():
try:
reg = OpenKey(HKEY_LOCAL_MACHINE, regpath)
except EnvironmentError:
print "*** Python not registered?!"
return
try:
DeleteKey(reg, installkey)
DeleteKey(reg, pythonkey)
DeleteKey(HKEY_LOCAL_MACHINE, regpath)
except:
print "*** Unable to un-register!"
else:
print "--- Python", version, "is no longer registered!"
中文详见:http://www.cnblogs.com/thinksasa/archive/2013/08/26/3283695.html
文件下载:
本文介绍了一个用于将Python 2.0及以后版本的解释器注册到Windows注册表的脚本,以便于win32all安装器等工具能够正确识别已安装的Python环境。同时提供了解除注册的方法。
7945

被折叠的 条评论
为什么被折叠?



