在64位 Windows 上安装 SetupTools

我在 Windows 764位上运行 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 的安装程序。我是否遗漏了什么,还是必须从源代码安装它?

165265 次浏览

显然(在 OS X 上面临相关的64位和32位问题)有一个 Windows Installer 里有虫子。我偶然发现了 这个变通方案,它可能会有所帮助——基本上,您可以创建自己的注册表值 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位的安装程序,这会给扩展模块带来问题。

安装程序找不到 Python 的原因是来自 Windows7的透明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 而不是 distutils 安装程序(easy _ install 或 pip)安装纯 Python 模块

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

对于64位 Python 在 Windows 上下载 Ez _ setup. py并运行它; 它将下载适当的。Egg 文件,并为您安装它。

在编写。由于 Distutils 安装程序兼容性问题,exe 安装程序不支持64位版本的 Python for Windows。

我做了一个登记(。Reg)文件,该文件将自动为您更改注册表。如果安装在“ C: Python27”中,它就可以工作:

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

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

为了允许 Windows 安装程序在 视窗7或 OR 中找到安装的 Python 目录,更改要安装安装程序的 Python 安装位置,将安装的路径添加到 InstallPath注册表项的 (默认值)值中:

Wow6432Node Python Python PythonCore2.X InstallPath

其中“ X”是 Python 版本(即2.5、2.6或2.7)。

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

是的,您是正确的,问题出在64位 Python 和32位 setuptools 安装程序上。

在 Windows 上安装64位 setuptools 的最佳方法是下载 Ez _ setup. py到 C: Python 27脚本并运行它。它将下载适当的64位。Egg 文件,并为您安装它。

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

另外,我建议不要使用第三方的64位.exe setuptools 安装程序或者操作注册表

创建一个名为 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"

确保每条路都是正确的!

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

这个要点获取文件 register.py。保存在你的 C 盘或 D 盘,到 CMD 运行它:

'python register.py'

然后你就可以安装它了。

我尝试了以上和添加注册表项的 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 Help ]

[ HKEY _ CURRENT _ USER SOFTWARE Python PythonCore 2.7 Help Main Python Document ] @ = “ C: Python 27 Doc python272.chm”

[ HKEY _ CURRENT _ USER SOFTWARE Python PythonCore 2.7 InstallPath ] @ = “ C: Python 27”

[ 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 Python 路径] @ = “ C: Python27 Lib; C: Python27 DLL; C: Python27 Lib-tk”

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

它只是按照上述答案对本地计算机的建议,对当前用户进行操作。

这里是另一个帖子/帖子的链接。我能够运行这个脚本来自动注册 Python 2.7。(请确保在您想要注册的 Python 2.x .exe上运行它!)

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

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