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


230

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

Чи можна встановити Python 2.x та Python 3.x у Windows 7? Коли я запускаю скрипт, як би я "обрав", яку версію Python слід запускати? Чи зможуть вищезгадані програми обробляти декілька встановлених версій Python одночасно? Я годинами і годинами шукав, як це зробити безрезультатно.

Дякую.



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. Прокрутіть униз до Шляхи, виберіть шлях, натисніть редагувати.

  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! Пітон 2.7.6. вийти.

  7. Тест: відкрийте підказку і введіть python3 .... BOOM! Python 3.4.3. вийти.

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


43
Це порушить і pip2, і pip3! Не замінюйте python, скопіюйте його та перейменуйте другий файл у python2 / python3.
brunofitas

1
просто слово обережності, я не зміг видалити python, поки я не повернув імена назад. Моя порада зробити копії та перейменувати ці файли, але оригінальні файли python.exe залишити в спокої **, як також згадував bruno.
Логіка1,

2
Чи могли б ви обробити відгуки брунофіта у відповіді?
030

Так, я просто перейменував python.exe в установці Python3 на python3.exe. Я думаю, що це автоматично відбувається з python в * nix середовищі. Звичайно немає файлів .exe, але є програми python2 та python3. :)
користувач3870315

Якщо у вас є бібліотека / плагін, який залежить від будь-якої версії 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


Це спрацювало. Перш ніж вносити цю зміну, коли я намагався запустити програму в 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 як 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.)

Посилання:

Завантажте Anaconda Python

Інструкції для середовищ


IMO conda - це, безумовно, найкращий спосіб возитися з різними установками Python. Я переплутав стільки речей, перш ніж переїхати до Анаконда.
jrinker

11

Щоб встановити та запустити будь-яку версію Python у тій же системі, дотримуйтесь мого керівництва нижче.


Наприклад, скажіть, що ви хочете встановити Python 2.x та Python 3.x в одній і тій же системі Windows.

  1. Встановіть обидва їх бінарні версії де завгодно.

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

    • py -2 за секунду python
    • py -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: \ Програмні файли \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Програмні файли \ Python_3.6 \ Сценарії \; C: \ Програмні файли \ 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т.д.

Сподіваємось, це досить зрозуміло.


Як би ви могли вказати встановити піп в одному із списків Python?
Víctor Martínez

Для першого пітона знайдіть просто введіть pip. Для будь-якого іншого встановленого пітона вам потрібно вручну вказати шлях, тобто. C:\Python27\Scripts\pip.py [parameters]. (Звичайно, як ярлик ви можете помістити будь-який exe, який ви хочете, у змінну оточення.)
Нікос

@ Nik-Lz, що це за команда "py -2"? У мене, здається, таких немає на моїх вікнах 7.
Янош

2
Саме так слід застосовувати python для Windows у випадку кількох версій.
getName


8

Ось що можна зробити:

Встановіть cmder . Відкрийте та використовуйте Cmder так само, як і з cmd-терміналом. Використовуйте псевдонім команд для створення псевдонімів команд.

Я зробив наступне:

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

І це все! ;-)


6
set-alias python2 c:\python27\python.exe
Пророк Даниїл

Використовуйте псевдонім набору в якості прикладу show, якщо використовуєте Powershell. У цьому випадку не потрібно було б встановлювати Cmder.
Пророк Даниїл

@ProphetDaniel Це слід розмістити як окрему відповідь. Це повністю відповідає на початкове запитання.
Dr_Zaszuś

7

Я насправді просто думав про цікаве рішення. Хоча Windows не дозволить вам легко псувати псевдоніми, ви можете замість цього створити перейменовані пакетні файли, які викликатимуть поточну програму.

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

%~dp0python %*

Що означає цей архаїчний синтаксис? Ну, це пакетний сценарій, (Windows версія bash). % ~ dp0 отримує поточний каталог і% * просто передасть усі аргументи python, передані в сценарій.

Повторіть для python3.bat

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

Найкраще, коли додається до PATH, Windows ігнорує розширення, яке працює

python3

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

До речі, це та сама техніка, яку використовує Spyder, щоб додати себе до шляху в Windows. :)


1
Дивовижне рішення без зміни існуючих файлів python.
Ом Пракаш

3

Ви можете встановити кілька версій машини Python на одній машині, а під час налаштування можна вибрати, щоб одна з них асоціювалася з розширеннями файлів Python. Якщо ви встановлюєте модулі, для різних версій будуть різні пакети налаштувань, або ви можете вибрати, на яку версію потрібно націлити. Оскільки вони, як правило, встановлюють себе в каталог сайтів пакунків версії інтерпретатора, конфліктів не повинно бути (але я цього не перевіряв). Щоб вибрати версію python, вам доведеться вручну вказати шлях до інтерпретатора, якщо він не є типовим. Наскільки я знаю, вони поділяли б однакові змінні PATH та PYTHONPATH, що може бути проблемою.

Примітка: я запускаю Windows XP. Я не маю уявлення, чи зміниться щось із інших версій, але я не бачу причин, щоб це було.


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 в цьому сценарії.


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 використовувати той, який ви хочете.

Як варіант (з python3.3 README):

Встановлення декількох версій

У системах Unix та Mac, якщо ви плануєте встановити кілька версій Python, використовуючи один і той же префікс установки (- аргумент префікса до сценарію налаштування), ви повинні подбати про те, щоб ваш основний виконуваний файл 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" в інших.


0

Мені просто довелося їх встановити. Тоді я скористався вільним (та портативним) програмним забезпеченням на сторінці http://defaultprogramseditor.com/ у розділі "Налаштування типу файлу" / "Контекстне меню" / пошук: "py", вибрав файл .py і додав команду "відкрити" для 2 IDLE, скопіювавши стару команду з назвою 'відкрити з IDLE, змінивши імена на IDLE 3.4.1 / 2.7.8 та замінивши номери файлів відповідних версій у шлях програми. Тепер мені просто клацнути правою кнопкою миші файл .py і обрати, який IDLE я хочу використовувати. Можна зробити те ж саме з прямими перекладачами, якщо вам зручніше.


-1

Працює лише в тому випадку, якщо ваш код запущений у вашому IDE Python

У мене в операційній системі Windows встановлені Python 2.7 та Python 3.3. Якщо я спробую запустити файл, він зазвичай відкриється на python 2.7 IDE. Як я вирішив цю проблему, коли я вирішив запустити свій код на python 3.3, відкриваю python 3.3 IDLE (Python GUI), вибираю файл, відкриваю мій файл із IDLE і зберігаю його. Потім, коли я запускаю свій код, він запускається до IDLE, з яким я його зараз відкрив. Він працює навпаки з 2.7.


-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 a la Linux?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.