配置:Win7 64位
不过折腾到最后,没有使用PIL,官方的PIL很久木有更新了,换了Pillow,是PIL的衍生吧,一直有更新,但是两者不可在同一环境共存。
1 Python version 2.7 required,which was not found in the registry.
官方下载http://www.pythonware.com/products/pil/,安装PIL,出现如下错误提示,Python version 2.7 required,which was not found in the registry.
解决方案:
1 import sys 2 3 from _winreg import * 4 5 # tweak as necessary 6 version = sys.version[:3] 7 installpath = sys.prefix 8 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 try: 18 reg = OpenKey(HKEY_CURRENT_USER, regpath) 19 except EnvironmentError as e: 20 try: 21 reg = CreateKey(HKEY_CURRENT_USER, regpath) 22 SetValue(reg, installkey, REG_SZ, installpath) 23 SetValue(reg, pythonkey, REG_SZ, pythonpath) 24 CloseKey(reg) 25 except: 26 print "*** Unable to register!" 27 return 28 print "--- Python", version, "is now registered!" 29 return 30 if (QueryValue(reg, installkey) == installpath and 31 QueryValue(reg, pythonkey) == pythonpath): 32 CloseKey(reg) 33 print "=== Python", version, "is already registered!" 34 return 35 CloseKey(reg) 36 print "*** Unable to register!" 37 print "*** You probably have another Python installation!" 38 39 if __name__ == "__main__": 40 RegisterPy()
将如上文件执行,进行注册,之后再尝试安装,成功。
2 DLL load failed:%1不是有效的Win32应用程序
但是之后在使用_imaging模块时又报错:
DLL load failed:%1不是有效的Win32应用程序
是因为安装的Python是64位,PIL却是32位,而官方发布的只有32位,找个非官方的64位安装。
3 如何卸载目前安装的PIL
在PIL安装路径下看到RemovePIL.exe文件,执行失败,提示:This program is normally started by Windoows。
在该路径中可看到PIL-wininst.log,里面有记录卸载的命令,根据提示执行卸载命令即可。
原因:
python有64位的,pil官方只有32位的。安装时会提示找不到python的安装路径。
64位Win7下无法安装PIL库的原因
PIL官方http://www.pythonware.com/products/pil/提供的PIL二进制安装库都是32位的。
64位程序和32位程序检测注册表的位置是不一样的:
64-bit: HKEY_LOCAL_MACHINESOFTWAREPython
32-bit: HKEY_LOCAL_MACHINESOFTWAREWow6432NodePython
我安装的是Python2.7 x64版,所以相关信息是在 HKEY_LOCAL_MACHINESOFTWAREPython下面,32位程序在HKEY_LOCAL_MACHINESOFTWAREWow6432NodePython 下面找Python安装信息,肯定是找不到了。
解决:
幸好有人提供了非官方的64位库(官方源码编译版)。
http://www.lfd.uci.edu/~gohlke/pythonlibs/