Как установить Python 2.7.3 32-разрядную и 64-разрядную версию в Windows рядом?

У меня Windows Vista 64.

У меня есть некоторые проекты, требующие Python 2.7.3 64-битные и другие, требующие Python 2.7.3 32-битные (потому что некоторые расширения не работают в 64-битной).

Как предотвратить установку другой версии программы MSI для Python 2.7.3 (бот 32 или 64)?

У меня бок о бок с Python 2.7.2 работал без проблем.

4 ответа

Решение

Кажется, это работает для меня в Windows 7 64 бит. Выберите одну версию для установки по умолчанию, например, 64-битную, и установите ее первой. Прежде чем делать что-либо еще, установите другую версию.

Укажите другой каталог установки и в Customize Python 2.7.3 выбор экрана Register Extensions и выберите Entire feature will be unavailable,

Как правило, вы можете установить несколько версий Python бок о бок. При установке в Windows, помимо установки файлов, реестр также обновляется, так что любая последующая установка пакета / инструментов может перечислять все установки Python в текущем m / c. Проблема возникает только в том случае, если установка выполняется для одной и той же версии, но с разной битностью. Поскольку путь реестра SOFTWARE\Python\Pythoncore\ не отличается от разрядности и исправления ошибок, в конечном итоге вы наложите InstallPath и PythonPath, если вы устанавливаете одну и ту же версию с другим исправлением ошибок или разной разрядностью.

Решение

  • Установите две разные версии для разной битности.
  • Подготовьте скрипт для обновления раздела реестра каждый раз, когда вы хотите переключиться между битами. Я случайно наткнулся на простой подобный скрипт в effbot, который выполняет работу.

Обновить

Как заметил Рудигер Юнгбек, что он может видеть два разных ключа реестра, я внезапно вспомнил важное изменение в Vista. В 64-разрядной системе для обеспечения доступа к разделам реестра из 32-разрядных и 64-разрядных приложений Windows разделяет реестр на важные узлы. Для 64-битных приложений это собственный путь к реестру, а для 32-битных приложений - WoW6432Node. Так что при запуске 32-битной версии Python\Tools\extension он будет видеть только Wow6432Node. 64-битные приложения будут видеть только собственный узел. Существуют API для доступа к узлам перекрестной битности, но это выходит за рамки этого вопроса. Подводя итог, можно сказать, что Windows разумно обрабатывает 32- и 64-разрядные приложения, разделяя узел, что позволяет 32-разрядным расширениям прозрачно обращаться к 32-разрядной установке Python.

При установке второго Python для расширений реестра выберите опцию "Вся функция будет недоступна". Путь установки Python 64 будет находиться в реестре "HKLM: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Python \ PythonCore \ 2.7 \ InstallPath"

Python 64-битный PythonPath будет в "HKLM: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \Python\PythonCore\2.7\PythonPath"

Путь установки Python 32 будет находиться в реестре "HKLM: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Wow6432Node \ Python \ PythonCore \ 2.7 \ InstallPath"

Python 32-битный PythonPath будет в "HKLM: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \Wow6432Node\Python\PythonCore\2.7\PythonPath"

Настройте Python, отключить исключение

Может ли установка 32-битного python для другого пользователя и установка 64-битного для другого пользователя решить эту проблему?

Другие вопросы по тегам