在64位Windows上安装SetupTools

时间:2010-09-06 15:32:43

标签: python setuptools easy-install

我在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的任何安装程序。我是否遗漏了某些内容,或者是否必须从源代码安装此内容?

11 个答案:

答案 0 :(得分:142)

问题:您有64位Python和32位安装程序。这将导致扩展模块出现问题。

安装程序找不到Python的原因是来自Windows 7的透明32位模拟.64位和32位程序将写入Windows注册表的不同部分。

64位:HKLM|HKCU\SOFTWARE\

32位:HKLM|HKCU\SOFTWARE\wow6432node\

这意味着64位Python安装程序会写入HKLM\SOFTWARE\Python,但32位setuptools安装程序会查看HKLM\SOFTWARE\wow6432node\Python(这由Windows自动处理,程序不会注意到)。这是预期的行为而不是错误。

通常,您有以下选择:

  • “干净”方式:如果必须使用32位模块或扩展
  • ,请使用32位Python
  • 另一种“干净”的方式:使用64位Python时只使用64位安装程序(见下文)
  • 上面的答案建议:将HKLM\SOFTWARE\Python复制到HKLM\SOFTWARE\wow6432node\Python,但导致二进制分发问题,因为64位Python无法加载32位已编译的模块(不要这样做!)
  • 使用setuptools而不是distutils安装程序(easy_install或pip)安装纯Python模块

例如,对于setuptools本身,您不能将32位安装程序用于64位Python,因为它包含二进制文件。 http://www.lfd.uci.edu/~gohlke/pythonlibs/有一个64位安装程序(其他模块也有许多安装程序)。如今,PyPi上的许多软件包都有二进制发行版,所以你可以通过pip安装它们。

答案 1 :(得分:91)

显然(在OS X上遇到相关的64位和32位问题)有一个bug in the Windows installer。我偶然发现了this workaround,这可能有所帮助 - 基本上,您创建自己的注册表值HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPath并从HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath复制InstallPath值。有关详细信息,请参阅下面的答案。

如果这样做,请注意setuptools 可能只安装32位库

注意:以下回复提供了更多详细信息,因此请仔细阅读。

答案 2 :(得分:69)

我制作了一个注册表(.reg)文件,它会自动为您更改注册表。如果它安装在“C:\ Python27”中,它可以工作:

Download 32-bit version HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

Download 64-bit version HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\

答案 3 :(得分:28)

是的,你是对的,问题在于64位Python和32位安装程序的setuptools。

在Windows上安装64位安装工具的最佳方法是将ez_setup.py下载到C:\ Python27 \ Scripts并运行它。它将为setuptools下载适当的64位.egg文件并为您安装。

来源:http://pypi.python.org/pypi/setuptools

P.S。我建议不要使用第三方64位.exe setuptools安装程序或操作注册表

答案 4 :(得分:9)

创建一个名为python2.7.reg的文件(注册表文件)并将此内容放入其中:

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"

确保每条路径都正确!

然后运行(合并)并完成:)

答案 5 :(得分:9)

this gist获取文件register.py。将其保存在C驱动器或D驱动器上,转到CMD以运行它:

'python register.py'

然后你就可以安装了它。

答案 6 :(得分:3)

对于Windows上的64位Python,请下载ez_setup.py并运行它;它将下载相应的.egg文件并为您安装。

在撰写本文时,由于distutils installer compatibility issue,.exe安装程序不支持64位版本的Python for Windows。

答案 7 :(得分:1)

要允许Windows安装程序在 Windows 7 中找到已安装的Python目录,或者更改要安装安装程序的Python安装,请将已安装的路径添加到 InstallPath 中注册表项的(默认)值:

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \的Python \ PythonCore \ 2.X \安装路径

X ”是Python版本(即2.5,2.6或2.7)。

答案 8 :(得分:1)

我尝试了上述操作并将注册表项添加到LOCALMACHINE并未完成工作。所以如果你仍然被困住,试试这个。

  

Windows注册表编辑器版本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 \文件\ python272.chm"

     

[HKEY_CURRENT_USER \ SOFTWARE \的Python \ PythonCore \ 2.7 \安装路径]   @ =" C:\ Python27 \"

     

[HKEY_CURRENT_USER \ SOFTWARE \的Python \ PythonCore \ 2.7 \安装路径\ InstallGroup]   @ =" Python 2.7"

     

[HKEY_CURRENT_USER \ SOFTWARE \的Python \ PythonCore \ 2.7 \模块]

     

[HKEY_CURRENT_USER \ SOFTWARE \的Python \ PythonCore \ 2.7 \ PYTHONPATH]   @ =" C:\ Python27 \库; C:\ Python27 \的DLL; C:\ Python27 \ LIB \ LIB-TK"

将上述内容粘贴到记事本中并将其保存为Python27.reg。现在运行/合并上面的答案中提到的文件。 (确保根据您的安装更正Python安装的路径。

对于当前用户,它只是做了上述答案对本地机器的建议。

答案 9 :(得分:0)

这是指向其他帖子/帖子的链接。我能够运行这个脚本来自动注册Python 2.7。 (确保从要注册的Python 2.x .exe运行它!)

要注册Python 3.x我必须修改print语法并导入winreg(而不是_winreg),然后运行Python 3 .exe

https://stackoverflow.com/a/29633714/3568893

答案 10 :(得分:-2)

你可以在这里找到很多lib的64位安装程序:http://www.lfd.uci.edu/~gohlke/pythonlibs/