我有 Windows Vista 64。
我有一些需要 Python 2.7.3 64 位的项目和其他需要 Python 2.7.3 32 位的项目(因为某些扩展在 64 位中不起作用)。
如何防止 Python 2.7.3 MSI 安装程序(32 或 64 机器人)删除其他版本。
使用 Python 2.7.2 并肩为我工作没有问题。
这似乎在 Windows 7 64 位上对我有用。选择一个版本作为您的默认安装,例如 64 位,然后先安装它。在做任何其他事情之前安装其他版本。
指定不同的安装目录并在Customize Python 2.7.3
屏幕中选择Register Extensions
并选择Entire feature will be unavailable
。
您通常可以并排安装多个 Python 版本。在 Windows 中安装时,除了文件安装之外,还会更新注册表,以便任何后续的包/工具安装都可以枚举当前 m/c 中的所有 Python 安装。
如果安装是针对相同版本但不同位数的,只会出现问题。因为注册表路径SOFTWARE\Python\Pythoncore\不区分位数和错误修复,如果您安装具有不同错误修复或不同位数的相同版本 ,您最终会覆盖InstallPath和PythonPath 。
解决方案
更新
正如 Ruediger Jungbeck 指出他可以看到两个不同的注册表项,我突然想起了 Vista 之后的一个重要变化。在 64 位系统上,为了能够从 32 位和 64 位应用程序访问注册表项,Windows 在重要节点处拆分注册表。对于 64 位应用程序,它是本机注册表路径,但对于 32 位应用程序,它是 WoW6432Node。因此,当运行 Python\Tools\extension 的 32 位版本时,它只会看到 Wow6432Node。64 位应用程序将只能看到本机节点。有 API 可以访问跨位节点,但这超出了这个问题的范围。总而言之,Windows 通过拆分节点来智能地处理 32 位和 64 位应用程序,这将允许 32 位扩展透明地访问 32 位 Python 安装。
在安装第二个 python 时,对于注册扩展选择“整个功能将不可用”选项。Python 64 安装路径将在注册表中“HKLM:SOFTWARE\Python\PythonCore\2.7\InstallPath”
Python 64 位 PythonPath 将位于“HKLM:SOFTWARE\Python\PythonCore\2.7\PythonPath”
Python 32 安装路径将在注册表中“HKLM:SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath”
Python 32 位 PythonPath 将位于“HKLM:SOFTWARE\Wow6432Node\Python\PythonCore\2.7\PythonPath”