32

我有 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 并肩为我工作没有问题。

4

3 回答 3

29

这似乎在 Windows 7 64 位上对我有用。选择一个版本作为您的默认安装,例如 64 位,然后先安装它。在做任何其他事情之前安装其他版本。

指定不同的安装目录并在Customize Python 2.7.3屏幕中选择Register Extensions并选择Entire feature will be unavailable

于 2012-09-16T16:02:32.700 回答
3

您通常可以并排安装多个 Python 版本。在 Windows 中安装时,除了文件安装之外,还会更新注册表,以便任何后续的包/工具安装都可以枚举当前 m/c 中的所有 Python 安装。 如果安装是针对相同版本但不同位数的,只会出现问题。因为注册表路径SOFTWARE\Python\Pythoncore\不区分位数和错误修复,如果您安装具有不同错误修复或不同位数的相同版本 ,您最终会覆盖InstallPathPythonPath 。

解决方案

  • 为不同的位数安装两个不同的版本。
  • 每次要在位数之间切换时,准备一个脚本来更新注册表项。我碰巧在effbot中偶然发现了一个简单的类似脚本来完成这项工作。

更新

正如 Ruediger Jungbeck 指出他可以看到两个不同的注册表项,我突然想起了 Vista 之后的一个重要变化。在 64 位系统上,为了能够从 32 位和 64 位应用程序访问注册表项,Windows 在重要节点处拆分注册表。对于 64 位应用程序,它是本机注册表路径,但对于 32 位应用程序,它是 WoW6432Node。因此,当运行 Python\Tools\extension 的 32 位版本时,它只会看到 Wow6432Node。64 位应用程序将只能看到本机节点。有 API 可以访问跨位节点,但这超出了这个问题的范围。总而言之,Windows 通过拆分节点来智能地处理 32 位和 64 位应用程序,这将允许 32 位扩展透明地访问 32 位 Python 安装。

于 2012-04-17T07:53:21.950 回答
2

在安装第二个 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”

使用禁用扩展自定义 Python

于 2016-04-06T05:32:26.270 回答