Python version 2.7, which was not found in the registry

在安装部分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()
View Code
原文地址:https://www.cnblogs.com/no-tears-girl/p/6959014.html