Як запустити кілька версій 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%змінної середовища, перевірка наявності виконуваного файлу (пакетного файлу ( .bat), командного файлу ( .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у своєму командному рядку.


41
як створити цей ярлик
Білал Башарат

8
Коли ви перебуваєте у вікні, перейдіть до папки, що містить версію python, для якої потрібно створити ярлик, а потім клацніть правою кнопкою миші та створити ярлик. Потім ви можете перейменувати його.
aodj

3
Вибачте, щоб викопати давню мертву посаду, але як змусити ярлик працювати, не вимагаючи розширення .lnk?
Натан Торнквіст

7
Якщо ярлик не працює, ви можете зробити так, як сказав @FJ, і просто скопіювати та перейменувати. Якщо цього не зробити, ви можете зробити символьне посилання, використовуючи '' mklink '' у командному рядку.
aodj

7
Хіба не найкращим способом було б створити файл bat під назвою python25 та python26 і зробити так, щоб вони викликали відповідну версію? Тоді все, що вам потрібно буде зробити, - це помістити ці 2 файли bat поряд із їх бінарними файлами.
Джеремі Кантрелл

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 та створіть два virtualenvs;

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 Простий, чіткий і робочий звичайно!
3bdalla

Дуже хороші пропозиції. Я використовував другий (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.


1
Це відповідь, яку я шукаю. Я запускаю Windows 10 з Python 2.7 та Python 3.4.3. У командному рядку введіть "py [python_version_number]" ex: py -3 або py буде викликати наявну у вас версію python. Я думаю, що змінні середовища повинні бути встановлені перед цим. це мені зручно.
CodeMonkey

2
@Inuka: Змінні середовища не потрібно встановлювати. Установник Python встановлює асоціації з .pyрозширенням. Сам пусковий апарат встановлений у C:\Windowsтому, що вже є PATH. Таким чином, також PATHзмінну не потрібно змінювати.
pepr

2
Велике спасибі за вашу відповідь. Таким чином ми можемо також викликати піп. py -2-м піп встановити SomePackage або py -3.4.3 -m pip встановити SomePackage
CodeMonkey

Я вважаю це найбільш простим і не суєтним рішенням.
prasad

46

Відповідно до @alexander ви можете створити набір символьних посилань, як показано нижче. Помістіть їх кудись, що включено у ваш шлях, щоб їх можна було легко викликати

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

До тих пір, поки c: \ bin або де б ви ніколи не розміщували їх, ви можете піти

> python25

4
Розумна ідея. BTW mklinkдоступний лише у Windows Vista / 2008 +. На XP та Server 2003 замість цього можна створити "жорстке посилання", використовуючи fsutil hardlink create <new filename> <existing filename>та розміщуючи або переміщуючи <нове ім'я файлу> десь на вашому шляху. Однак жорсткі посилання працюють лише на одному диску.
мартіно

Це хороше рішення, я не впевнений, що він працює і без файлової системи на базі NTFS.
meawoppl

Так, потрібна підтримка символічних посилань NTFS, які, на мою думку, були введені у Vista (я можу помилятися). Для використання в XP потрібно використовувати інший драйвер . Схоже, його було вимкнено на певному етапі до загального звільнення.
Крістофер Хакетт

Найпростіше найкраще рішення
giantas

15
  1. встановити python

    • 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команда буде заплутаною для ОС.
тестувальник

Чудова відповідь! Спасибі ~ @ 山 茶树 和 葡萄 树
Bright Chang

14

Наприклад для 3.6 версії типу py -3.6. Якщо у вас також є 32-бітні та 64-бітні версії, ви можете просто ввести py -3.6-64або py -3.6-32.


3
Це має бути Прийнятий відповідь! Дякую тонну!
Xonshiz

3
Це, можливо, найкраща відповідь, оскільки це не вимагає перейменування файлів, а сторонні IDE не визначатимуть як нормальне!
Чаруйте97

не могли б ви покращити відповідь додатковим поясненням - де це 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команду.

У Windows ви не отримуєте глобальної pythonкоманди, наскільки я знаю, тому це не проблема.


дякую за допомогу уре PLZ відповісти на моє друге питання також: як я можу запустити обидва одночасно? як я успішно перейшов з 2,5 на 2,6
Білал Башарат

@Bilal Basharat: Windows - це багатозадачна ОС, якщо ви хочете одночасно запускати дві речі, ви просто запускаєте обидва, тому я не розумію вашого питання.
Леннарт Регебро

в даний час я працюю на python2.5. просто поясніть мені, як я можу також запустити 2.6? коли я записую "python" у командному рядку Windows для введення оболонки python, ніж з'являється python2.5. в дисководі у мене була встановлена ​​обидві версії. коли я переходжу до C: \ Python2.6 \ Python.exe. ніж тимчасово активований python2.6. як тільки я покину C: \ Python2.6 \, він знову перетворився на версію 2.5
Білал Башарат

3
@Bilal Basharat: Я вже відповів на це. Він не "тимчасово активований". Ви запустили Python 2.6 за допомогою команди C: \ Python2.6 \ Python.exe, і ось так його запустите. І ви запускаєте Python 2.5 за допомогою команди C: \ Python2.5 \ Python.exe. Ось так ви запускаєте обидва одночасно.
Леннарт Регебро

1
@Bilal Basharat: Якщо C:\Python2.5або C:\Python2.6каталог або відображається у PATHзмінній вашого середовища, відповідна версія Python стане типовою, якщо ви не перекриєте її, чітко вказавши інший шлях до .exe, який ви хочете використовувати.
мартіно


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.
>>>

це працювало для мене. Просто потрібно використовувати копію замість cp. Також під час виконання цієї команди ви повинні бути десь на шляху, і обидві установки python, наприклад c: \ python34 \ bin \ python.exe і c: \ python27 \ bin \ python.exe, також повинні бути на шляху. (бажано в такому порядку).
Грегор Шмітц

1

Використання пакетного файлу для перемикання, просто та ефективно у Windows 7. Я використовую це:

У діалоговому вікні змінної середовища (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe),

У розділі змінні користувача

  1. додано% pathpython% до змінної середовища шляху

  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/


-1

Використовуючи швидкий редактор середовища, ви можете перенести вгору каталог потрібної установки Python. Наприклад, щоб запустити python із каталогу c: \ Python27, переконайтеся, що каталог c: \ Python27 знаходиться перед або на вершині каталогу c: \ Python36 у змінній середовища Path. З мого досвіду, виконується перший виконуваний файл python у середовищі Path. Наприклад, у мене встановлено MSYS2 з Python27, і оскільки я додав C: \ MSYS2 на шлях до C: \ Python36, виконується python.exe з папки C: \ MSYS2 ....


-4

Просто викличте правильний виконуваний файл


в даний час я працюю на 2.5. просто поясніть мені, як я можу також запустити 2.6. у командному рядку Windows мені довелося написати "python" для введення оболонки python. і це 2,5. в дисководі у мене була встановлена ​​обидві версії.
Білал Башарат

Замість pythonвведення оболонки спробуйте python2.5або python2.6. Я не користувач Windows, але на unix / usr / bin / python зазвичай псевдонім повністю кваліфікованого виконуваного файлу, я припускаю, що python у Windows встановлений аналогічно
albertov

1
У Windows виконується ім'я завжди python.exe, але ви змінюєте шлях до виконуваного файлу. Це було пояснено вже кілька разів.
jgritty
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.