在64位Windows上安装SetupTools
我在Windows 7 64位上运行Python 2.7,当我运行setuptools的安装程序时,它告诉我Python 2.7没有安装。 具体的错误信息是:
`Python Version 2.7 required which was not found in the registry`
我安装的Python版本是:
`Python 2.7 (r27:82525, Jul 4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win32`
我正在查看setuptools网站,并没有提到64位Windows的任何安装程序。 我错过了什么,或者我必须从源代码安装?
显然(在OS X上遇到了相关的64位和32位问题) ,Windows安装程序中存在一个错误 。 我偶然发现这个解决方法 ,这可能会有所帮助 – 基本上,你创build自己的registry值HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPath
并从HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath
复制InstallPath值。 请参阅下面的答案了解更多详情。
如果你这样做,请注意setuptools 只能安装32位库 。
注意:下面的答案提供了更多的细节,所以请阅读它们。
问题:你有64位的Python和一个32位的安装程序。 这将导致扩展模块出现问题。
安装程序没有findPython的原因是来自Windows 7的透明32位模拟。64位和32位程序将写入Windowsregistry的不同部分。
64位: HKLM|HKCU\SOFTWARE\
32位: HKLM|HKCU\SOFTWARE\wow6432node\
。
这意味着64位的Python安装程序写入HKLM\SOFTWARE\Python
,但是32位的setuptools安装程序会查看HKLM\SOFTWARE\wow6432node\Python
(这是由Windows自动处理的,程序不会注意到)。 这是预期的行为,而不是一个错误。
通常,你有这些select:
- “干净”的方式:如果您必须使用32位模块或扩展名,则使用32位Python
- 另一种“干净”的方式:只使用64位安装程序时,使用64位Python(见下文)
- 上面的答案是什么:将
HKLM\SOFTWARE\Python
复制到HKLM\SOFTWARE\wow6432node\Python
,但这会导致二进制分发问题,因为64位Python无法加载32位编译模块(不要这样做! ) - 使用setuptools而不是distutils安装程序(easy_install或pip)安装纯Python模块,
例如,对于setuptools本身,您不能使用64位Python的32位安装程序,因为它包含二进制文件。 但在http://www.lfd.uci.edu/~gohlke/pythonlibs/有一个64位的安装程序(也有许多其他模块的安装程序); 。 作为一个经验法则:使用distribute和pip来安装纯python模块(参见这里 ),并find一个二进制包,它与您已安装的Python体系结构相匹配。
我做了一个registry(.reg)文件,将自动更改为您的registry。 它可以在“C:\ Python27”中安装:
下载32位版本 HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\
下载64位版本 HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\
是的,你是正确的,问题是用于setuptools的64位Python和32位安装程序。
在Windows上安装64位setuptools的最好方法是将ez_setup.py下载到C:\ Python27 \ Scripts并运行它。 它会为setuptools下载合适的64位.egg文件并为您安装。
资料来源: http : //pypi.python.org/pypi/setuptools
PS我build议不要使用第三方64位.exe setuptools安装程序或操作registry
创build一个名为python2.7.reg
(registry文件)的文件,并将这个内容放入它:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\Help] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\Help\MainPythonDocumentation] @="C:\\Python27\\Doc\\python26.chm" [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath] @="C:\\Python27\\" [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath\InstallGroup] @="Python 2.7" [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\Modules] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\PythonPath] @="C:\\Python27\\Lib;C:\\Python27\\DLLs;C:\\Python27\\Lib\\lib-tk"
并确保每条路线是正确的!
然后运行(合并)它并完成:)
从这个要点获取文件register.py
。 将它保存在C盘或D盘上,转到CMD运行:
'python register.py'
那么你将能够安装它。
对于Windows上的64位Python,请下载ez_setup.py并运行它; 它会下载相应的.egg文件并为您安装。
在撰写本文时,由于distutils安装程序兼容性问题 ,.exe安装程序不支持用于Windows的Python的64位版本。
要允许Windows安装程序在Windows 7中查找已安装的Python目录,或者更改要安装安装程序的Python安装,请将已安装的path添加到InstallPathregistry项的(默认)值中:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Python的\ PythonCore \ 2.X \安装path
其中“ X ”是Python版本(即2.5,2.6或2.7)。
我尝试了上面的,并将registry项添加到LOCALMACHINE没有完成工作。 所以如果你仍然坚持,试试这个。
Windowsregistry编辑器版本5.00
[HKEY_CURRENT_USER \ SOFTWARE \的Python]
[HKEY_CURRENT_USER \ SOFTWARE \的Python \ PythonCore]
[HKEY_CURRENT_USER \ SOFTWARE \的Python \ PythonCore \ 2.7]
[HKEY_CURRENT_USER \ SOFTWARE \ Python的\ PythonCore \ 2.7 \帮助]
[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ Help \ Main Python Documentation] @ =“C:\ Python27 \ Doc \ python272.chm”
[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ InstallPath] @ =“C:\ Python27 \”
[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ InstallPath \ InstallGroup] @ =“Python 2.7”
[HKEY_CURRENT_USER \ SOFTWARE \的Python \ PythonCore \ 2.7 \模块]
[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ PythonPath] @ =“C:\ Python27 \ Lib; C:\ Python27 \ DLLs; C:\ Python27 \ Lib \ lib-tk”
复制粘贴上面的记事本,并保存为Python27.reg。 现在运行/合并上面的答案中提到的文件。 (确保Python安装的path按照您的安装进行了更正。
它只是做了什么,上面的答案build议本地机器,当前用户。
这是一个链接到另一个职位/线程。 我能运行这个脚本来自动注册Python 2.7。 (请确保从您要注册的Python 2.x .exe
运行它!)
要注册Python 3.x我必须修改print
语法并导入winreg
(而不是_winreg
),然后运行Python 3 .exe
。
你可以在这里find很多libs的64位安装程序: http : //www.lfd.uci.edu/~gohlke/pythonlibs/