在64位Windows上安装SetupTools

133 投票
11 回答
165779 浏览
提问于 2025-04-16 03:46

我在64位的Windows 7上运行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 个回答

69

我制作了一个注册表文件(.reg),可以自动帮你修改注册表。如果你把它安装在“C:\Python27”这个路径下,它就能正常工作:

下载32位版本 HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

下载64位版本 HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\

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自动处理的,程序不会察觉到)。这是一种正常的行为,不是bug。

通常,你有以下选择:

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

以setuptools为例,你不能用32位的安装程序来安装64位的Python,因为它包含二进制文件。不过,你可以在http://www.lfd.uci.edu/~gohlke/pythonlibs/找到64位的安装程序(这里还有很多其他模块的安装程序)。现在,很多PyPi上的包都有二进制分发,所以你可以通过pip来安装它们。

91

看起来在OS X上遇到过相关的64位和32位问题后,发现Windows安装程序有一个bug。我偶然发现了这个解决办法,可能会对你有帮助。简单来说,就是你需要自己创建一个注册表值 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPath,然后把 HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath 里的InstallPath值复制过去。想了解更多细节,可以看看下面的回答。

如果你这样做,要注意setuptools可能只会安装32位的库

注意:下面的回复提供了更多细节,建议你也去看看。

撰写回答