Как запустить несколько версий Python в Windows

170

На моем компьютере были установлены две версии Python (версии 2.6 и 2.5). Я хочу запустить 2.6 для одного проекта и 2.5 для другого.

Как я могу указать, какой я хочу использовать?

Я работаю на Windows XP SP2.

Билал Башарат
источник
3
Хорошие советы для того, чтобы задавать вопросы - это объяснить, что вы пытались и каким образом это не удалось. Итак: что вы пробовали, и каким образом это не сработало?
Леннарт Регебро
Обратите внимание, что я не мог найти никаких предыдущих вопросов по этому поводу в Windows, поэтому я изменил название, чтобы отразить это.
Леннарт Регебро
Если вы хотите запустить 3.3 вместе с 2.7, то это самый стандартизированный ответ: - stackoverflow.com/questions/15912063/…
Омар Тарик

Ответы:

135

Запуск другой копии Python так же прост, как запуск правильного исполняемого файла. Вы упоминаете, что вы запустили экземпляр Python из командной строки, просто набрав python.

В Windows это делается для траления %PATH%переменной среды, проверки наличия исполняемого файла (batch file ( .bat), command file ( .cmd) или другого исполняемого файла (это управляется PATHEXTпеременной среды)), соответствующего указанному имени. Когда он находит правильный файл для запуска, файл запускается.

Теперь, если вы установили две версии Python 2.5 и 2.6, в пути будут оба каталога, что-то вроде, PATH=c:\python\2.5;c:\python\2.6но Windows перестанет проверять путь, когда найдет совпадение.

Что вам действительно нужно сделать, это явно вызвать одно или оба приложения, такие как c:\python\2.5\python.exeили c:\python\2.6\python.exe.

Другой альтернативой является создание ярлыка для соответствующего python.exeвызова одного из них python25и другого python26; Вы можете просто запустить python25в командной строке.

aodj
источник
41
как создать этот ярлык
Билал Башарат
8
Когда вы находитесь в Windows, перейдите в папку, содержащую версию Python, для которой вы хотите создать ярлык, затем щелкните правой кнопкой мыши и создайте ярлык. Вы можете переименовать его.
aodj
3
Извините, что выкопал длинный мертвый пост, но как вы заставите ярлык работать, не требуя расширения .lnk?
Натан Торнквист
7
Если ярлык не работает, вы можете сделать, как сказал @FJ, и просто скопировать и переименовать. В противном случае вы можете создать символическую ссылку, используя '' mklink '' в командной строке.
aodj
7
Разве не лучше всего было бы создать bat-файл с именами python25 и python26 и заставить их вызывать соответствующую версию? Тогда все, что вам нужно сделать, это поместить эти 2 файла с битами вместе с их двоичными файлами.
Джереми Кантрелл
100

Добавляем еще два решения проблемы:

  • Используйте pylauncher (если у вас есть Python 3.3 или новее, нет необходимости устанавливать его, так как он уже поставляется с Python) и либо добавьте строки shebang в ваши скрипты;

#! c:\[path to Python 2.5]\python.exe- для скриптов, которые вы хотите запускать с Python 2.5
#! c:\[path to Python 2.6]\python.exe- для скриптов, которые вы хотите запускать с Python 2.6

или вместо запуска pythonкоманды запустите pylauncher command ( py), указав, какую версию Python вы хотите;

py -2.6- версия 2.6
py -2- последняя установленная версия 2.x
py -3.4- версия 3.4
py -3- последняя установленная версия 3.x

  • Установите virtualenv и создайте два virtualenv;

virtualenv -p c:\[path to Python 2.5]\python.exe [path where you want to have virtualenv using Python 2.5 created]\[name of virtualenv]

virtualenv -p c:\[path to Python 2.6]\python.exe [path where you want to have virtualenv using Python 2.6 created]\[name of virtualenv]

например

virtualenv -p c:\python2.5\python.exe c:\venvs\2.5

virtualenv -p c:\python2.6\python.exe c:\venvs\2.6

затем вы можете активировать первый и работать с Python 2.5, как это,
c:\venvs\2.5\activate
и когда вы хотите переключиться на Python 2.6, вы делаете

deactivate  
c:\venvs\2.6\activate
Петр Доброгост
источник
pylauncher, по-видимому, является прототипом реализации PEP 397, которая была принята в качестве отслеживания стандартов еще в 2011 году. Знаете ли вы, почему лаунчер до сих пор не распространяется с Python для Windows или почему до сих пор существует только реализация прототипа Vinay Sajip?
Мартино
4
Pylauncher распространяется с Python начиная с версии 3.3 - см. Python.org/download/releases/3.3.0 . Также я думаю, что реализация Vinay Sajip - это реализация, а не просто прототип.
Петр Доброгост
1
Спасибо за разъяснение. IMHO pylauncher должен распространяться как часть последней версии Python 2, потому что люди, использующие эту версию, более склонны к тем, кто хочет установить несколько версий (и с большей вероятностью сделают это, если будут знать о его функциональности и доступности).
Мартино
StackOverflow должен позволять несколько голосов, ваш ответ заслуживает бесконечных голосов! Серьезно, где ты был братан! : D Просто, понятно и работает конечно!
3бдалла
Очень хорошие предложения. Я использовал второй (virtualenv) один. Только разница я нашел я должен был включать «\ Scripts» в пути , чтобы активировать, например: c:\venvs\2.5\scripts\activate. Это на Windows 10, если это имеет значение. Кроме того, работает как шарм, спасибо.
Дейв Марли
53

Начиная с версии Python 3.3, существует официальный модуль запуска Python для Windows ( http://www.python.org/dev/peps/pep-0397/ ). Теперь вы можете использовать #!pythonXдля определения требуемой версии интерпретатора также в Windows. Смотрите подробности в моем другом комментарии или прочитайте PEP 397.

Резюме: В py script.pyпусках версия Python , указанные в #!или Python 2 , если #!отсутствуют. В py -3 script.pyЗапускает Python 3.

pepr
источник
1
Это ответ, который я ищу. Я запускаю Windows 10 с Python 2.7 и Python 3.4.3. В командной строке введите «py [python_version_number]», например: py -3 или py вызовет версию Python, которая у вас есть. Я думаю, что переменные среды должны быть установлены, прежде чем использовать это. это удобно для меня.
CodeMonkey
2
@Inuka: не нужно устанавливать переменные окружения. Установщик Python устанавливает ассоциации с .pyрасширением. Сам лаунчер установлен в C:\Windowsкоторый уже в PATH. Таким образом, PATHпеременную также не нужно изменять.
Пепр
2
Большое спасибо за ваш ответ, приятель. Таким образом, мы можем также вызвать пункт. py -2 -m pip установить SomePackage или py -3.4.3 -m pip установить SomePackage
CodeMonkey
Я думаю, что это самое простое и без суеты решение.
Прасад
46

Согласно @alexander вы можете создать набор символических ссылок, как показано ниже. Поместите их куда-нибудь, что входит в ваш путь, чтобы их можно было легко вызвать

> cd c:\bin
> mklink python25.exe c:\python25\python.exe
> mklink python26.exe c:\python26\python.exe

До тех пор, пока c: \ bin или где-либо, где вы поместили их, находится на вашем пути, вы можете теперь идти

> python25
Кристофер Хакетт
источник
4
Умная идея Кстати mklink, только изначально доступны в Windows Vista / 2008 +. В XP и Server 2003 вместо этого можно было бы создать «жесткую ссылку», используя fsutil hardlink create <new filename> <existing filename>и помещая или перемещая <новое имя файла> в какое- то место на вашем пути. Однако жесткие ссылки работают только на одном диске.
Мартино
Это хорошее решение, я не уверен, что оно работает без файловой системы на базе NTFS.
meawoppl
Да, требуется поддержка символических ссылок NTFS, которые, как мне кажется, были введены в Vista (я могу ошибаться). Использование на XP требует использования другого драйвера . Похоже, он был отключен на каком-то этапе перед общим выпуском.
Кристофер Хакетт
самое простое лучшее решение
гиганты
15
  1. установить питон

    • C: \ python27
    • C: \ Python36
  2. переменная окружения

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. переименование файла

    • C: \ Python27 \ python.exe → C: \ Python27 \ python2.exe
    • C: \ Python36 \ python.exe → C: \ Python36 \ python3.exe
  4. зернышко

    • python2 -m pip install package
    • python3 -m pip install package
山 茶树 和 葡萄 树
источник
Я думаю, более или менее это практическое решение вопроса. Это более удобно по сравнению с подходом, в котором ярлык / символическая ссылка используется для вызова скрипта Python. Вместо переименования файла мы можем скопировать и вставить двоичный файл (python.exe), а затем переименовать его в соответствии с его версией (как показано в этом ответе). Кстати, pythonкоманда будет сбивать с толку ОС.
тестирующий
Отличный ответ! Спасибо ~ @ 山 茶树 和 葡萄 树
Яркий Чанг
14

Например для версии 3.6 типа py -3.6. Если у вас также есть 32-битная и 64-битная версии, вы можете просто набрать py -3.6-64или py -3.6-32.

Мехран Джалили
источник
3
Это должен быть принятый ответ! Благодаря тонну!
Xonshiz
3
Возможно, это лучший ответ, так как не требует переименования файлов, а сторонние IDE будут обнаруживать и то и другое как обычно!
Enchant97
Не могли бы вы улучшить ответ с дополнительным объяснением - где этот pyисполняемый файл - это дополнение только для Windows? Можно ли включить это в кросс-платформенный скрипт командной строки, который находится вверху: #!/usr/bin/env python3например?
Эд Рэндалл
7

Когда вы устанавливаете Python, он не будет перезаписывать другие установки других основных версий. Таким образом, установка Python 2.5.x не перезапишет Python 2.6.x, хотя установка 2.6.6 перезапишет 2.6.5.

Так что вы можете просто установить его. Затем вы называете нужную вам версию Python. Например:

C:\Python2.5\Python.exe

для Python 2.5 на Windows и

C:\Python2.6\Python.exe

для Python 2.6 в Windows, или

/usr/local/bin/python-2.5

или

/usr/local/bin/python-2.6

в Windows Unix (включая Linux и OS X).

При установке в Unix (включая Linux и OS X) вы получите установленную общую pythonкоманду, которая будет последней из установленных вами. В большинстве случаев это не проблема, так как большинство сценариев явно вызывают /usr/local/bin/python2.5 или что-то просто для защиты от этого. Но если вы не хотите этого делать, и, вероятно, не хотите, вы можете установить его так:

./configure
make
sudo make altinstall

Обратите внимание, что «altinstall» означает, что он установит его, но не заменит pythonкоманду.

pythonНасколько я знаю, в Windows нет глобальной команды, так что это не проблема.

Леннарт Регебро
источник
спасибо за помощь, пожалуйста, ответьте на мой второй вопрос также: как я могу запустить оба одновременно? как я успешно переключился с 2,5 на 2,6
Билал Башарат
@ Билал Башарат: Windows - многозадачная ОС, если вы хотите запускать две вещи одновременно, вы просто запускаете обе, так что я не понимаю ваш вопрос.
Леннарт Регебро
В настоящее время я работаю над Python2.5. просто объясните мне, как я могу запустить 2.6 тоже? когда я пишу «python» в командной строке Windows, чтобы войти в оболочку Python, появляется python2.5. на диске C у меня были установлены обе версии. когда я иду в C: \ Python2.6 \ Python.exe. чем python2.6 временно активирован. как только я покидаю C: \ Python2.6 \, он снова превращается в версию 2.5
Билал Башарат
3
@ Билал Башарат: Я уже ответил на это. Он не «временно активирован». Вы запустили Python 2.6 с помощью команды C: \ Python2.6 \ Python.exe, и именно так вы его запустили. И вы запускаете Python 2.5 с помощью команды C: \ Python2.5 \ Python.exe. Вот как вы запускаете оба одновременно.
Леннарт Регебро
1
@Bilal Basharat: Если в переменной среды появляется каталог C:\Python2.5или , соответствующая версия Python станет стандартной, если вы не переопределите ее, явно указав другой путь к .exe, который вы хотите использовать. C:\Python2.6PATH
Мартино
5

Вот быстрый взлом:

  1. Перейдите в каталог версии Python, которую вы хотите запустить
  2. Щелкните правой кнопкой мыши на python.exe
  3. Выберите « Создать ярлык »
  4. Дайте этому ярлыку имя для вызова (я использую p27, p33 и т. Д.)
  5. Переместите этот ярлык в свой домашний каталог ( C:\Users\Your name)
  6. Откройте командную строку и введите name_of_your_shortcut.lnk(я использую p27.lnk)
Дэвид Грейданус
источник
1

cp c: \ python27 \ bin \ python.exe как python2.7.exe

cp c: \ python34 \ bin \ python.exe как python3.4.exe

все они находятся в системном пути, выберите версию, которую вы хотите запустить

C:\Users\username>python2.7
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>>

C:\Users\username>python3.4
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
bruceyang
источник
это сработало для меня. Просто нужно использовать копию вместо cp. Также при выполнении этой команды вы должны быть где-то на пути, и обе установки python, например, c: \ python34 \ bin \ python.exe и c: \ python27 \ bin \ python.exe также должны быть в пути. (желательно в таком порядке).
Грегор Шмитц
1

Использование командного файла для переключения, простой и эффективный в Windows 7. Я использую это:

В диалоговом окне переменной среды (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe),

В разделе пользовательские переменные

  1. добавлен% pathpython% в переменную окружения path

  2. удалены ссылки на пути Python

В разделе системные переменные

  1. удалены ссылки на пути Python

Я создал пакетные файлы для каждой установки Python (например, для 3.4 x64

Имя = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) просто чтобы запомнить.

Содержимое файла =

     Set PathPython=C:\Python36AMD64\Scripts\;C:\Python36AMD64\;C:\Tcl\bin

     setx PathPython %PathPython%

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

!!!!! Изменения вступают в силу для окон командной строки SUBSEQUENT OPENED. !!!

Так что у меня есть точный контроль над этим.

Мужчина
источник
0

Самый простой способ запустить несколько версий Python в Windows описан ниже следующим образом:

1) Загрузите последние версии python с python.org/downloads , выбрав соответствующую версию для вашей системы.

2) Запустите установщик и выберите « Добавить python 3.x к пути, чтобы автоматически установить путь в python 3» (вам просто нужно установить флажок). Для python 2 откройте ваш установщик python 2, выберите любые предпочтения, которые вы хотите, но просто не забудьте установить параметр Добавить python.exe в путь, который будет установлен на локальном жестком диске. Теперь просто нажмите кнопку «Далее» и дождитесь завершения установки.

3) Когда обе установки завершены. Щелкните правой кнопкой мыши на моем компьютере - Перейдите к свойствам - Выберите дополнительные параметры системы - Переход к переменным окружения - Нажмите на новый под Системные переменные и добавить новую системную переменную с именем переменной как PY_PYTHON и установить эту переменную значение для 3 . Теперь нажмите ОК, и все готово.

4) Теперь, чтобы проверить это, откройте командную строку . Как только вы попали туда, наберите python или py. Он должен открыть python3 .

5) Теперь выйдите из python3, набрав exit () . Теперь введите py -2, он должен открыть Python 2.

Если ничего из этого не работает, перезагрузите компьютер и, если проблема не устранена, удалите все и повторите шаги.

Спасибо.

Суровый сингх
источник
0

Вы можете создавать различные среды разработки Python графически из Anaconda Navigator. У меня была та же проблема при работе с разными версиями Python, поэтому я использовал навигатор anaconda для создания разных сред разработки Python и использовал разные версии Python в каждой среде.

Вот справочная документация для этого.

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/

mohitesachin217
источник
-1

Используя Rapid Environment Editor, вы можете перенести в каталог нужную установку Python. Например, чтобы запустить python из каталога c: \ Python27, убедитесь, что каталог c: \ Python27 находится до или поверх каталога c: \ Python36 в переменной среды Path. По моему опыту, выполняется первый исполняемый файл python, найденный в среде Path. Например, у меня установлен MSYS2 с Python27, и, поскольку я добавил C: \ MSYS2 в путь до C: \ Python36, выполняется python.exe из папки C: \ MSYS2 .....

Богдан Оливер Сточин
источник
-4

Просто назовите правильный исполняемый файл

Albertov
источник
В настоящее время я работаю над 2.5. просто объясните мне, как я могу запустить 2.6 тоже. В командной строке Windows мне пришлось написать «Python», чтобы войти в оболочку Python. и это 2,5. на диске C у меня были установлены обе версии.
Билал Башарат
Вместо того, pythonчтобы войти в оболочку попробуйте python2.5или python2.6. Я не пользователь windows, но в unix / usr / bin / python обычно используется псевдоним для полностью квалифицированного исполняемого файла, я предполагаю, что python в windows устанавливается аналогичным образом
albertov
1
В Windows имя исполняемого файла всегда python.exe, но вы меняете путь к исполняемому файлу. Это уже объяснялось уже несколько раз.
jgritty