在 64 位 Windows 上安装 SetupTools
- 2025-04-16 08:57:00
- admin 原创
- 19
问题描述:
我在 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的安装程序。我是不是漏掉了什么?还是必须从源代码安装?
解决方案 1:
问题:您使用的是 64 位 Python 和 32 位安装程序。这会导致扩展模块出现问题。
安装程序找不到 Python 的原因是 Windows 7 的透明 32 位仿真。64 位和 32 位程序将写入 Windows 注册表的不同部分。
64 位:HKLM|HKCUSOFTWARE
32 位:HKLM|HKCUSOFTWAREwow6432node
。
这意味着 64 位 Python 安装程序会写入HKLMSOFTWAREPython
,但 32 位 setuptools 安装程序会查看HKLMSOFTWAREwow6432nodePython
(Windows 会自动处理,程序不会察觉)。这是预期行为,并非 bug。
通常,您有以下选择:
“干净”的方式:如果必须使用 32 位模块或扩展,请使用 32 位 Python
另一种“干净”的方式:使用 64 位 Python 时仅使用 64 位安装程序(见下文)
上面的答案建议:复制
HKLMSOFTWAREPython
到HKLMSOFTWAREwow6432nodePython
,但这会导致二进制分发出现问题,因为 64 位 Python 无法加载 32 位编译模块(不要这样做!)使用 setuptools 而不是 distutils 安装程序(easy_install 或 pip)安装纯 Python 模块
例如,对于 setuptools 本身,由于它包含二进制文件,因此您无法将 32 位安装程序用于 64 位 Python。不过, http://www.lfd.uci.edu/~gohlke/pythonlibs/上有一个 64 位安装程序(也包含许多其他模块的安装程序)。如今,PyPi 上的许多软件包都有二进制发行版,因此您可以通过 pip 安装它们。
解决方案 2:
显然(我在 OS X 上遇到过相关的 64 位和 32 位问题) Windows 安装程序中存在一个bug 。我偶然发现了一个解决方法,它可能会有所帮助——基本上,你可以创建自己的注册表值HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.6InstallPath
,然后从 复制 InstallPath 值HKEY_LOCAL_MACHINESOFTWAREPythonPythonCore.6InstallPath
。有关更多详细信息,请参阅下面的答案。
如果您这样做,请注意 setuptools可能只安装 32 位库。
注意:以下回复提供了更多详细信息,因此也请阅读它们。
解决方案 3:
我创建了一个注册表 (.reg) 文件,它可以自动更改注册表。如果该文件安装在“C:\Python27”目录下,它就可以正常工作:
下载 32 位版本 HKEY_LOCAL_MACHINE|HKEY_CURRENT_USERSOFTWAREwow6432node
下载 64 位版本 HKEY_LOCAL_MACHINE|HKEY_CURRENT_USERSOFTWARE
解决方案 4:
是的,您说得对,问题出在 64 位 Python 和 32 位 setuptools 安装程序上。
在 Windows 上安装 64 位 setuptools 的最佳方法是将ez_setup.py下载到 C:\Python27\Scripts 并运行。它会下载适用于 setuptools 的 64 位 .egg 文件并自动安装。
来源:http://pypi.python.org/pypi/setuptools
PS 我建议不要使用第三方 64 位 .exe setuptools 安装程序或操作注册表
解决方案 5:
创建一个名为(注册表文件)的文件python2.7.reg
,并将此内容放入其中:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.7]
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.7Help]
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.7HelpMainPythonDocumentation]
@="C:\\Python27\\Doc\\python26.chm"
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.7InstallPath]
@="C:\\Python27\\\"
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.7InstallPathInstallGroup]
@="Python 2.7"
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.7Modules]
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodePythonPythonCore.7PythonPath]
@="C:\\Python27\\Lib;C:\\Python27\\DLLs;C:\\Python27\\Lib\\lib-tk"
并确保每条路径都是正确的!
然后运行(合并)它并完成:)
解决方案 6:
register.py
从此gist获取文件。将其保存在 C 盘或 D 盘,然后打开 CMD 命令运行:
'python register.py'
然后您就可以安装它了。
解决方案 7:
对于 Windows 上的 64 位 Python,请下载ez_setup.py并运行它;它将下载相应的 .egg 文件并为您安装。
在撰写本文时,由于distutils 安装程序兼容性问题,.exe 安装程序不支持 Windows 的 64 位版本的 Python 。
解决方案 8:
为了允许 Windows 安装程序在Windows 7中找到已安装的 Python 目录,或者,更改要安装安装程序的 Python 安装,请将安装路径添加到InstallPath注册表项的(默认)值中:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.X\InstallPath
其中“ X ”是 Python 版本(即 2.5、2.6 或 2.7)。
解决方案 9:
我尝试了上述方法,但将注册表项添加到 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 文档] @="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\Modules]
[HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\2.7\PythonPath] @="C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk"
将上述内容复制粘贴到记事本中,并将其另存为 Python27.reg。现在,按照上述答案中所述运行/合并该文件。(请确保 Python 安装路径已根据您的安装情况进行了更正。)
它只是向当前用户执行上述答案针对本地机器所建议的操作。
解决方案 10:
这是另一篇帖子/主题的链接。我能够运行这个脚本来自动注册 Python 2.7。(请确保从.exe
要注册的 Python 2.x 版本运行它!)
要注册 Python 3.x,我必须修改print
语法并导入winreg
(而不是_winreg
),然后运行 Python 3 .exe
。
https://stackoverflow.com/a/29633714/3568893
解决方案 11:
您可以在这里找到许多库的 64 位安装程序:http://www.lfd.uci.edu/~gohlke/pythonlibs/
扫码咨询,免费领取项目管理大礼包!