Как установить Python 2.x и Python 3.x в Windows

230

Я делаю большую часть своего программирования на Python 3.x в Windows 7, но теперь мне нужно использовать Python Imaging Library (PIL), ImageMagick и wxPython, для работы которых требуется Python 2.x.

Могу ли я установить Python 2.x и Python 3.x в Windows 7? Когда я запускаю скрипт, как бы я «выбрал», какая версия Python должна его запускать? Смогут ли вышеупомянутые программы обрабатывать несколько версий Python, установленных одновременно? Я часами искал, как это сделать, но безрезультатно.

Спасибо.

dln385
источник
2
Да, как говорит @NickT, это проще всего. К сожалению, ни один из ответов ниже не дает простой и понятный подход. (Те, в которых упоминается версия 3.3, являются наиболее близкими.) Для лучшего ответа см. Принятый ответ под двойным вопросом: stackoverflow.com/a/17245543/1593924 В двух словах, используйте новую программу запуска py, с или без -3 параметр. И подумайте о добавлении shebangs (#!) В ваши скрипты, чтобы вам не понадобился параметр.
Джон Кумбс
1
Кроме того, некоторые находят полезными подробности, которые я разместил здесь: stackoverflow.com/a/13533958/1593924
Джон Кумбс

Ответы:

150

Я обнаружил, что формальный способ сделать это заключается в следующем:

Просто установите две (или более, используя их установщики) версии Python на Windows 7 (для меня работа с 3.3 и 2.7).

Следуйте инструкциям ниже, изменяя параметры для ваших нужд.

Создайте следующую переменную среды (по умолчанию при двойном щелчке):

Name:  PY_PYTHON
Value: 3

Чтобы запустить скрипт в определенном интерпретаторе, добавьте следующий шебанг (начало скрипта):

#! python2

Чтобы выполнить сценарий с использованием определенного интерпретатора, используйте следующую команду приглашения:

> py -2 MyScript.py

Чтобы запустить конкретного переводчика:

> py -2

Чтобы запустить интерпретатор по умолчанию (определяется переменной PY_PYTHON):

> py

Ресурсы

Документация: Использование Python в Windows

PEP 397 - средство запуска Python для Windows

Педро Вагнер
источник
8
Кроме того, чтобы использовать easy_install или pip с обеими версиями, измените путь для включения c:\python35;c:\python35\scripts;c:\python27\scripts;. Это позволяет использовать pip2/ pip3, и easy_install-2.7/ easy_install-3.5вместо pipи easy_install.
rdtsc
1
Не будет работать с различными программами, которые не поставляют свой собственный Python и настаивают на использовании системной версии, и не уважают лаунчер.
Джонатан Болдуин
1
Нет, не добавляйте Python к пути. Использование py -m pip install .... Добавьте переключатели после, pyчтобы выбрать Python для запуска pip, как указано выше.
Марк Толонен
75

Я скачал 2.7.6 и 3.3.4. В Python 3.3.4 есть возможность добавить путь к нему в переменной окружения, чтобы это было сделано. В общем, я просто вручную добавил Python 2.7.6.

Как...

  1. Пуск> в типе поиска в среде выберите «Изменить переменные среды для вашей учетной записи» 1

  2. Прокрутите вниз до Path, выберите path, нажмите edit.

  3. Добавить C: \ Python27; поэтому у вас должны быть пути к обеим версиям Python, но если вы этого не сделаете, вы можете легко отредактировать их так, чтобы вы делали ..... C: \ Python27; C: \ Python33;

  4. Перейдите в папку Python27 в C: \ и переименуйте копию python.exe в python2.exe.

  5. Перейдите в папку Python34 в C: \ и переименуйте копию python.exe в python3.exe.

  6. Тест: откройте командную строку и введите python2 .... BOOM! Python 2.7.6. выход

  7. Тест: откройте командную строку и введите python3 .... BOOM! Python 3.4.3. выход

Примечание: (чтобы не нарушать команды pip на шаге 4 и 5, сохраните копию python.exe в том же каталоге, что и переименованный файл)

user3458330
источник
43
Это сломает как pip2, так и pip3! Не заменяйте python, скопируйте его и переименуйте второй файл в python2 / python3.
Брунофитас
1
просто предостережение, я не смог удалить python, пока не вернул имена обратно. Я советую делать копии и переименовывать их, но не трогайте оригинальные файлы python.exe **, как также упоминает bruno.
Logic1
2
Не могли бы вы обработать обратную связь brunofitas в ответе?
030
Да, я просто переименовал python.exe в установке Python3 в python3.exe. Я думаю, что это автоматически происходит с python в среде * nix. Конечно, нет файлов .exe, но есть программы на python2 и python3. :)
user3870315
Если у вас есть библиотека / плагин, который зависит от любой версии python, убедитесь, что эта версия стоит на первом месте в вашей переменной среды PATH
aphoe
51

У меня есть несколько версий в Windows. Я просто изменяю exe-имя версии, к которой я не по умолчанию.

python.exe -> python26.exe

pythonw.exe -> pythonw26.exe

Что касается установщиков пакетов, большинство установщиков exe-файлов позволяют выбрать установку python, чтобы добавить пакет. Для ручной установки проверьте параметр --prefix, чтобы определить, где должен быть установлен пакет:

http://docs.python.org/install/index.html#alternate-installation-windows-the-prefix-scheme

monkut
источник
Это сработало. До внесения этого изменения, когда я пытался запустить программу на Python 2.7, она все еще работала на Python 3.1 (возможно, потому что Windows 7 не может обрабатывать две разные программы с одинаковым именем). После переименования exe, как показано, все прошло хорошо.
dln385
4
@ dln385: Если он ответил на ваш вопрос, вы должны принять его, нажав на галочку.
dappawit
1
Это сработало и для меня. У меня был конфликт между Python 2.7 и Python 3.2. Поскольку я сначала установил Python 3.2 (и настроил его как переменную окружения), я не смог получить доступ к Python 2.7 в командной строке (вместо этого я получил Python 3.2). Я хотел использовать Python 2.7 по умолчанию, поэтому я изменил python.exe на python3.2.exe и оставил python.exe Python 2.7 без изменений. Это добилось цели.
Роберт Смит
Я не устанавливал новый python3 на Windows некоторое время, но у меня есть версия, включающая pip as pip3и pip3.4. (это также включает в себя pip, но, я думаю, удаление, которое должно разрешить любые конфликты с python2). На самом деле у меня нет C:\Python34\Scriptsпо моему Path, так что я не имел каких - либо связанных с пипсов проблем ...
monkut
30

Если вы используете Anaconda Python, вы можете легко установить различные среды.

Допустим, у вас установлен Anaconda Python 2.7 и вы хотите среду Python 3.4:

conda create -n py34 python=3.4 anaconda

Затем для активации среды:

activate py34

И чтобы деактивировать:

deactivate py34

(С Linux вы должны использовать source activate py34.)

Ссылки:

Скачать Анаконда Питон

Инструкции для сред

philshem
источник
IMO conda - безусловно лучший способ связываться с различными установками Python. Я перепутал очень много вещей, прежде чем переехать в Анаконду.
Джринкер
11

Для установки и запуска любой версии Python в той же системе следуйте моему руководству ниже.


Например, вы хотите установить Python 2.x и Python 3.x в одной системе Windows.

  1. Установите оба их бинарных релиза где угодно.

    • При появлении запроса не регистрируйте свои расширения файлов и
    • не добавляйте их автоматически в переменную окружения PATH
  2. При простом выполнении команды pythonбудет выбран исполняемый файл, который впервые встречается в PATH. Другими словами, добавьте каталоги Python вручную. Тот, который вы добавите первым, будет выбран при вводе python. Последовательные программы на Python (в порядке возрастания расположения их каталогов в PATH) будут выбраны следующим образом:

    • пи -2 для второго python
    • пи -3 за третий и pythonт.д ..
  3. Независимо от порядка "питонов" вы можете:

    • запустите скрипты Python 2.x с помощью команды: py -2 (функциональность Python 3.x) (т.е. будет выбрана первая программа установки Python 2.x, найденная в вашем PATH)
    • Запустите скрипты Python 3.x с помощью команды: или py -3 (т.е. будет выбрана первая программа установки Python 3.x, найденная в вашем PATH)

В моем примере у меня установлен Python 2.7.14 и Python 3.5.3. Вот как моя переменная PATH начинается с:

PATH = C: \ Program Files \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Program Files \ Python_3.6 \ Scripts \; C: \ Program Files \ Python_3.6 \; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Program Files (x86) \ Общие файлы \ Intel \ Shared

...

Обратите внимание, что Python 2.7 - первый, а Python 3.5 - второй.

  • Таким образом, pythonкоманда запускает Python 2.7 (если Python 3.5 та же команда запускает Python 3.5).
  • Запуск py -2запускает Python 2.7 (поскольку случается, что второй Python - это Python 3.5, который несовместим с py -2). Запуск py -3запускает Python 3.5 (потому что это Python 3.x)
  • Если у вас другой питон позже на своем пути вы бы начать так: py -4. Это может измениться, если / когда Python версии 4 выпущен.

Теперь py -4или py -5т. Д. На моих системных выходах: Requested Python version (4) not installedили Requested Python version (5) not installedт. Д.

Надеюсь, это достаточно ясно.

Nikos
источник
Как вы могли бы указать установку pip в одном из дисков Python?
Виктор Мартинес
Для первого найденного питона просто наберите pip. Для любого другого установленного питона вы должны вручную указать путь, т.е. C:\Python27\Scripts\pip.py [parameters], (Конечно, в качестве ярлыка, вы можете поместить любой исполняемый файл в переменную окружения.)
Никос
@ Nik-Lz Что это за команда "пи-2", на которую вы ссылаетесь? У меня их нет на моих окнах 7.
Янос
2
Это именно то, как Python должен использоваться в Windows в случае нескольких версий.
getName
8

Начиная с версии 3.3, в версии для Windows имеется средство запуска Python, ознакомьтесь с разделом 3.4. Python Launcher для Windows

Дмитрий Соболев
источник
8

Вот что вы можете сделать:

Установите cmder . Откройте и используйте Cmder, как если бы вы использовали терминал cmd. Используйте псевдоним команды для создания псевдонимов команды.

Я сделал следующее:

alias python2 = c:\python27\python.exe
alias python3 = c:\python34\python.exe

И это все! ;-)

user402429
источник
6
set-alias python2 c:\python27\python.exe
Пророк Даниил
Используйте set-alias в качестве примера, показанного при использовании Powershell. В этом случае не будет необходимости устанавливать Cmder.
Пророк Даниил
@ProphetDaniel Это должно быть опубликовано как отдельный ответ. Это полностью отвечает на оригинальный вопрос.
Dr_Zaszuś
7

Я просто подумал об интересном решении. Хотя Windows не позволяет вам легко создавать псевдонимы программ, вы можете вместо этого создавать переименованные пакетные файлы, которые будут вызывать текущую программу.

Вместо того, чтобы переименовывать исполняемый файл, который ломает многие вещи, включая pip, создайте файл python2.bat в том же каталоге, что и python2.exe. Затем добавьте следующую строку:

%~dp0python %*

Что означает этот архаичный синтаксис? Ну, это пакетный скрипт (версия bash для Windows). % ~ dp0 получает текущий каталог, а% * просто передает все аргументы в python, которые были переданы в скрипт.

Повторите для python3.bat

Вы также можете сделать то же самое для pip и других утилит, просто замените слово python в файле на pip или любое другое имя файла. Псевдоним будет любым именем файла.

Лучше всего, когда добавляется в PATH, Windows игнорирует расширение, поэтому работает

python3

Запустит версию python3 и команда python2 запустит версию python2.

Кстати, это та же самая техника, которую Spyder использует для добавления себя в путь в Windows. :)

Skylion
источник
1
Отличное решение без изменения существующих файлов Python.
Ом Пракаш
3

Вы можете установить несколько версий Python на одну машину, и во время установки вы можете выбрать одну из них, связанную с расширениями файлов Python. Если вы устанавливаете модули, будут разные установочные пакеты для разных версий, или вы можете выбрать, какую версию вы хотите настроить. Поскольку они обычно устанавливаются в каталог site-packages версии интерпретатора, не должно быть никаких конфликтов (но я не проверял это). Чтобы выбрать версию Python, вам нужно будет вручную указать путь к интерпретатору, если он не задан по умолчанию. Насколько я знаю, они будут использовать одни и те же переменные PATH и PYTHONPATH, что может быть проблемой.

Примечание: я использую Windows XP. Я понятия не имею, если что-то из этого меняется для других версий, но я не вижу причин, по которым это будет.

li.davidm
источник
3
У меня установлены python 2.5, 2.6 и 3.1 одновременно, мне даже не приходило в голову, что мне, возможно, придется сделать что-то сложнее, чем просто запустить все установщики для каждой нужной мне версии.
SingleNegationElimination
3

На моем собственном компьютере с Windows, на котором установлены Python 2.7 и Python 3.4, я написал простой .bat-файл в той же папке, что и мои файлы Python.exe. Они выглядят примерно так:

cmd /k "c:\python27\python.exe" %*

% * Позволяет вам добавлять аргументы (файлы Python) впоследствии. Я полагаю, что / k сохраняет приглашение открытым после завершения работы скрипта. Затем я сохраняю это как python27.bat. Затем я захожу в мой каталог Python 3 и создаю там файл bat. Теперь в моей командной строке я могу написать

Python27 helloworld.py

Или

Python34 helloworld.py

И они будут работать в своих соответствующих версиях Python. Убедитесь, что c: \ python27 и c: \ python34 находятся в ваших переменных окружения.

Я получил ответ отсюда

Брайан Кимани
источник
2

Я сделал это в три этапа, следуя приведенным здесь инструкциям: все это взято прямо отсюда: http://ipython.readthedocs.io/en/stable/install/kernel_install.html . В настоящее время я использую Python 2.x в Windows 8 и у меня установлена ​​Anaconda 4.2.13.

1) Сначала установите последнюю версию python:

conda create -n python3 python=3 ipykernel

2) Далее активируйте python3

activate python3

3) Установить ядро:

python -m ipykernel install --user

Если у вас установлен Python 3 и вы хотите установить 2, переключите 2 и 3 выше. Когда вы открываете новый блокнот, вы можете выбирать между Python 2 или 3.

Моиз Кападия
источник
1

Проверьте системные переменные окружения после установки Python, каталоги python 3 должны быть сначала в переменной PATH, а затем в python 2.

Какая переменная пути совпадает первой - та, которую использует Windows.

Как всегда py -2 запустит python2 в этом сценарии.

Spitfire19
источник
1

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

Единственная проблема - ваш .py должен быть в папке python, но в любом случае вот код:

Для Python2

@echo off
title Python2 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 23, 24, 25, 26)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
path = %PATH%;C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Для Python3

@echo off
title Python3 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 31, 32, 33, 34)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
cls
set path = %PATH%:C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Сохраните их как .bat и следуйте инструкциям внутри.

Вроде
источник
0

Установите тот, который вы используете чаще всего (3.3 в моем случае) поверх другого. Это заставит IDLE использовать тот, который вы хотите.

Альтернативно (из README python3.3):

Установка нескольких версий

В системах Unix и Mac, если вы собираетесь установить несколько версий Python с использованием одного и того же префикса установки (аргумент --prefix для скрипта configure), вы должны позаботиться о том, чтобы ваш основной исполняемый файл python не был перезаписан при установке другой версии. Все файлы и каталоги, установленные с помощью «make altinstall», содержат главную и вспомогательную версии и, следовательно, могут работать бок о бок. «make install» также создает $ {prefix} / bin / python3, который ссылается на $ {prefix} /bin/pythonX.Y. Если вы намереваетесь установить несколько версий, используя один и тот же префикс, вы должны решить, какая версия (если таковая имеется) является вашей "основной" версией. Установите эту версию, используя «make install». Установите все остальные версии, используя «make altinstall».

Например, если вы хотите установить Python 2.6, 2.7 и 3.3 с 2.7 в качестве основной версии, вы должны выполнить «make install» в вашем каталоге сборки 2.7 и «make altinstall» в других.

abudhabikid
источник
0

Я просто должен был установить их. Затем я использовал бесплатное (и переносимое) программное обеспечение по адресу http://defaultprogramseditor.com/ в разделе «Настройки типа файла» / «Контекстное меню» / search: «py», выбрал файл .py и добавил команду «open» для 2 IDLE, скопировав существующую команду с именем 'open with IDLE, изменив имена на IDLE 3.4.1 / 2.7.8 и переместив номера файлов их соответствующих версий в путь к программе. Теперь мне нужно просто щелкнуть правой кнопкой мыши по файлу .py и выбрать, какой IDLE я хочу использовать. Можно сделать то же самое с прямыми переводчиками, если вы предпочитаете.

wheya
источник
-1

Работает только в том случае, если вы выполняете свой код в Python IDE

На моей операционной системе Windows установлены Python 2.7 и Python 3.3. Если я пытаюсь запустить файл, он обычно открывается в Python 2.7 IDE. Как я решил эту проблему, когда я решил запустить свой код на python 3.3, я открываю python 3.3 IDLE (Python GUI), выбираю файл, открываю свой файл с IDLE и сохраняю его. Затем, когда я запускаю свой код, он работает на IDLE, с которым я в данный момент открыл его. Работает наоборот с 2.7.

user3295433
источник
-1

Я установил как python 2.7.13, так и python 3.6.1 на Windows 10pro, и я получал одну и ту же «фатальную ошибку», когда я пробовал pip2 или pip3.

Чтобы исправить это, я должен был перейти к папке python.exe для файлов python 2 и python 3 и создать их копию, затем я переименовал каждую копию в python2.exe и python3.exe в зависимости от версии python в установочная папка. Поэтому у меня в каждой папке установки python был и файл python.exe, и файл python2.exe или python3.exe, в зависимости от версии python.

Это решило мою проблему, когда я набрал pip2 или pip3.

Эдди Оньянго
источник
-2

Если вы не можете заставить что-либо работать, откройте переводчик в любой выбранной вами версии (я предпочитаю использовать iPython) и:

import subprocess

subprocess.call('python script.py -flags')

Он использует ту версию Python, под которой вы сейчас работаете. Хорошо работает для одного скрипта, но быстро выйдет из-под контроля, если вы запустите много скриптов, и в этом случае вы всегда можете создать командный файл со всеми этими вызовами внутри. Не самый элегантный ответ, но он работает.

Есть ли способ сделать псевдонимы для разных версий Python а-ля Linux?

user2796022
источник