在安装部分Python包时会出现问题:明明已经安装了Python2.7,但无法在注册表相关位置找不到,那该怎么感觉该问题呢?
首先检查你的系统位数,位数不同,解决方案不一样。
1)32位系统:在cmd输入regedit然后将HKEY_LOCAL_MACHINESOFTWAREPythonPythonCore2.7InstallPath路径下的值,复制到HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore2.7InstallPath路径下,当然没有路径的话一定要新建起来。然后就可以安装了。本解决方案适用于只提供了32位安装包的库。
原因:Python的一些第三方库只到注册表的HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore2.7InstallPath路径下寻找Python。但是装好的64位Python在HKEY_LOCAL_MACHINESOFTWAREPythonPythonCore2.7InstallPath路径下建立Python的信息。
2)64位系统:将Python2.7加入到注册表中。可以通过运行下面代码:

1 import sys 2 3 4 from _winreg import * 5 6 # tweak as necessary 7 version = sys.version[:3] 8 installpath = sys.prefix 9 regpath = "SOFTWARE\Python\Pythoncore\%s\" % (version) 10 installkey = "InstallPath" 11 pythonkey = "PythonPath" 12 pythonpath = "%s;%s\Lib\;%s\DLLs\" % ( 13 installpath, installpath, installpath 14 ) 15 16 def RegisterPy(): 17 print "begin RegisterPy " 18 try: 19 print "open key : %s"%regpath 20 reg = OpenKey(HKEY_CURRENT_USER, regpath) 21 except EnvironmentError as e: 22 try: 23 reg = CreateKey(HKEY_CURRENT_USER, regpath) 24 SetValue(reg, installkey, REG_SZ, installpath) 25 SetValue(reg, pythonkey, REG_SZ, pythonpath) 26 CloseKey(reg) 27 except: 28 print "*** EXCEPT: Unable to register!" 29 return 30 31 print "--- Python", version, "is now registered!" 32 return 33 34 35 if (QueryValue(reg, installkey) == installpath and 36 QueryValue(reg, pythonkey) == pythonpath): 37 CloseKey(reg) 38 print "=== Python", version, "is already registered!" 39 return CloseKey(reg) 40 41 print "*** ERROR:Unable to register!" 42 print "*** REASON:You probably have another Python installation!" 43 44 def UnRegisterPy(): 45 #print "begin UnRegisterPy " 46 try: 47 print "open HKEY_CURRENT_USER key=%s"%(regpath) 48 reg = OpenKey(HKEY_CURRENT_USER, regpath) 49 #reg = OpenKey(HKEY_LOCAL_MACHINE, regpath) 50 except EnvironmentError: 51 print "*** Python not registered?!" 52 return 53 try: 54 DeleteKey(reg, installkey) 55 DeleteKey(reg, pythonkey) 56 DeleteKey(HKEY_LOCAL_MACHINE, regpath) 57 except: 58 print "*** Unable to un-register!" 59 else: 60 print "--- Python", version, "is no longer registered!" 61 62 if __name__ == "__main__": 63 RegisterPy()