Кілька версій Python на одній машині?


87

Чи є десь офіційна документація на веб-сайті Python про те, як встановити та запустити кілька версій Python на одній машині в Linux?

Я можу знайти мільйони публікацій у блозі та відповіді, але я хочу знати, чи існує "стандартний" офіційний спосіб зробити це?

Або все це залежить від ОС?

Відповіді:


79

Я думаю, що це абсолютно самостійно. Просто встановіть їх, тоді у вас будуть команди, наприклад /usr/bin/python2.5і /usr/bin/python2.6. Посилання /usr/bin/pythonна те, яке потрібно використовувати за замовчуванням.

Усі бібліотеки в будь-якому випадку знаходяться в окремих папках (названих відповідно до версії).

Якщо ви хочете скомпілювати версії вручну, це з файлу readme вихідного коду Python:

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

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

Наприклад, якщо ви хочете встановити Python 2.5, 2.6 і 3.0, а 2.6 є основною версією, ви виконаєте "make install" у своєму каталозі збірки 2.6, а "make altinstall" в інших.


5
Дякуємо, "make install" на первинному та "make altinstall" на вторинному дали зрозуміти.
Андрій Дроздюк

4
Будь-який правильний спосіб обміну бібліотеками між версіями? Скажімо, у мене є MySQLdb для 2.6, а потім встановлений 2.7. як зробити MySQLdb доступним і для 2.7?
romeroqj

Вся інформація, яку ви надаєте, стосується Unix / Linux та Mac OS, тому явно не є "абсолютно незалежною" від ОС, як просить OP. Для Windows процес зовсім інший, але однаково простий.
wwwayne

28

У Windows вони встановлюються в окремі папки "C: \ python26" і "C: \ python31", але виконувані файли мають однакове ім'я "python.exe".

Я створив ще одну папку "C: \ python", яка містить "python.bat" і "python3.bat", які служать обгортками для "python26" і "python31" відповідно, і додав "C: \ python" до PATHзмінної середовища.

Це дозволяє мені вводити pythonабо python3обгортати .bat Python, щоб розпочати ту, яку я бажаю.

У Linux ви можете використовувати #!фокус, щоб вказати, яку версію ви хочете використовувати для сценарію.


Що додати до цих файлів .bat?
Ейдіс

Не підтримую цю відповідь лише тому, що вона дуже специфічна для Windows і питання стосувалося Linux, інакше чудова інформація.
Jim Aho

2
Користувача більше не існує, я дуже хотів цей пакетний файл
Wargog

6
Це те, що я помістив у свій файл python.bat (лише один рядок): "c: \ python27 \ python% *" Потім я просто викликаю це нормально, тобто 'python test.py' і% * захопить усі аргументи і передати його фактичному виконуваному файлу. Ви також можете використовувати mklink безпосередньо у своїй папці C: \ bin. Детальніше див. Тут: stackoverflow.com/a/13953614/865929
Шон Гловер

1
Тепер ви можете просто запустити py -3.4або, py -2.7і програма py(внизу C:\Windows) вибере цей інтерпретатор python (за умови, що він встановлений).
JamesThomasMoon1979

12

Оновлення 2019: Використання asdf

У наші дні я пропоную використовувати asdf для встановлення різних версій інтерпретаторів Python поруч.

Примітка 1. asdfпрацює не лише для Python, але й для всіх основних мов.

Примітка2: asdfчудово працює у поєднанні з популярними менеджерами пакетів, такими як pipenv та поезія .

Якщо у вас встановлено asdf, ви можете легко завантажити / встановити нові інтерпретатори Python:

# Install Python plugin for asdf:
asdf plugin-add python

# List all available Python interpreters:
asdf list-all python

# Install the Python interpreters that you need:
asdf install python 3.7.4
asdf install python 3.6.9
# etc...

# If you want to define the global version:
asdf global python 3.7.4

# If you want to define the local (project) version:
# (this creates a file .tool-versions in the current directory.)
asdf local python 3.7.4

Стара відповідь: Встановіть Python з джерела

Якщо вам потрібно встановити кілька версій Python (поруч з основною) на Ubuntu / Mint : (має працювати аналогічно на інших Unix '.)

1) Встановіть необхідні пакети для компіляції джерел

$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

2) Завантажте та витягніть бажану версію Python

Завантажте Python Source для Linux як tarball і перемістіть його до /usr/src.

Витягніть завантажений пакет на місце. (замініть "x" на завантажену версію)

$ sudo tar xzf Python-x.x.x.tgz

3) Скомпілюйте та встановіть Python Source

$ cd Python-x.x.x
$ sudo ./configure
$ sudo make altinstall

Тепер ваша нова кошик Python знаходиться в /usr/local/bin. Ви можете протестувати нову версію:

$ pythonX.X -V
Python x.x.x
$ which pythonX.X
/usr/local/bin/pythonX.X

# Pip is now available for this version as well:
$ pipX.X -V
pip X.X.X from /usr/local/lib/pythonX.X/site-packages (python X.X)

6

Як встановлювати різні версії Python насправді залежить від ОС.

Однак, якщо ви використовуєте Linux, ви можете використовувати такий інструмент, як pythonbrew або pythonz, який допоможе вам легко керувати різними версіями та перемикатися між ними.


Я встановив на mac за допомогою configure / make altinstall. Поки що проблем немає.
Євген

Чи можна надати $user1іншу версію python, ніж типову?
Роланд

1
Для цього pyenvбуде працювати @Roland . З readme у посиланні, розміщеному вище:> [Дозвольте] ви змінюєте глобальну версію Python для кожного користувача.
theeddieh

5

Я використовую Mac і найкращий спосіб, який працював для мене, це використання pyenv!

Наведені нижче команди призначені для Mac, але дуже схожі на Linux (див. Посилання нижче)

#Install pyenv
brew update
brew install pyenv

Скажімо, у вас є основна версія python 3.6 на вашому mac:

python --version 

Вихід:

Python <your current version>

Тепер встановіть python 3.7, спочатку перелічіть усі

pyenv install -l

Візьмемо 3.7.3:

pyenv install 3.7.3

Не забудьте запустити це в терміналі (додайте його до ~ / .bashrc або ~ / .zshrc):

export PATH="/Users/username/.pyenv:$PATH"
eval "$(pyenv init -)"

Тепер давайте запускати його лише на відкритому терміналі / оболонці :

pyenv shell 3.7.3

Тепер біжи

python --version

Вихід:

Python 3.7.3

І не менш важливо зняти його з відкритої оболонки / iTerm:

pyenv shell --unset

Ви можете запустити його глобально або локально , а також


1

Менеджери пакетів - на рівні користувача

Для менеджера пакетів, який може встановлювати та керувати декількома версіями python, це хороший вибір:

  • pyenv - здатний лише встановлювати та керувати версіями python
  • asdf - здатний встановлювати та керувати різними мовами

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

Цей недолік полягає в тому, що за замовчуванням вони встановлюються на рівні користувача (всередині вашої домашньої директорії) і вимагають трохи конфігурації на рівні користувача - вам потрібно буде відредагувати ваш ~/.profileта ~/.bashrcподібні файли. Це означає, що непросто використовувати їх для глобальної установки декількох версій python для всіх користувачів. Для цього ви можете встановити з джерела поряд із наявною версією Python в ОС.


Встановлення з джерела - загальносистемне

Для цього методу вам знадобляться права root.

Додаткові міркування та параметри див. В офіційній документації python для побудови з джерела .

/usr/localє призначеним місцем для системного адміністратора для встановлення спільного (загальносистемного) програмного забезпечення, тому його підкаталоги є гарним місцем для завантаження джерела python та встановлення. Див. Розділ 4.9 стандарту ієрархії файлів Linux Foundation .

Встановіть будь-які залежності збірки. У системах на базі Debian використовуйте:

apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev

Виберіть, яку версію python ви хочете встановити. Дивіться Python Релізи початкових кодів сторінку для лістингу.

Завантажте та розпакуйте файл /usr/local/src, замінивши X.X.Xнижче версію python (тобто 3.8.2).

cd /usr/local/src
wget https://www.python.org/ftp/python/X.X.X/Python-X.X.X.tgz
tar vzxf Python-X.X.X.tgz

Перш ніж будувати та встановлювати, встановіть CFLAGSзмінну середовища необхідними прапорами компілятора C (див. makeДокументацію GNU ). Зазвичай це не потрібно для загального користування, але якщо, наприклад, ви збиралися створити плагін uWSGI з цією версією python, можливо, ви захочете встановити прапори -fPICз наступним:

export CFLAGS='-fPIC'

Змініть робочий каталог на розпакований вихідний каталог python та налаштуйте збірку. Можливо, ви захочете використовувати --enable-optimizationsопцію в ./configureкоманді для оптимізації керованого профілю . Використовуйте --prefix=/usr/localдля установки в відповідні підкаталоги ( /usr/local/bin, /usr/local/libі т.д.).

cd Python-X.X.X
./configure --enable-optimizations --prefix=/usr/local

Створіть проект за допомогою makeта встановіть за допомогою, make altinstallщоб уникнути перевизначення будь-яких файлів при встановленні декількох версій. Див. Попередження на цій сторінці документації збірки python.

make -j 4
make altinstall

Тоді ви зможете запускати нові версії python та pip за допомогою pythonX.Xі pipX.X(тобто python3.8і pip3.8). Зверніть увагу, що якщо незначна версія вашої нової інсталяції збігається з версією ОС (наприклад, якщо ви встановлювали python3.8.4, а ОС використовувала python3.8.2), вам потрібно буде вказати весь шлях ( /usr/local/bin/pythonX.X) або встановити псевдонім для використання цієї версії.


0

Це найсильніше залежить від системи розподілу пакетів, яку ви використовуєте. Наприклад, за допомогою MacPorts ви можете встановити кілька пакетів Python і скористатися pyselectутилітою для легкого перемикання між ними за замовчуванням. У будь-який час ви можете викликати різні інтерпретатори Python, надаючи повний шлях, і ви можете зв’язувати всі бібліотеки та заголовки Python, надаючи повні шляхи для них.

Отже, в основному, яким би способом ви не встановлювали версії, поки ви тримаєте свої установки окремо, ви зможете запускати їх окремо.


Що таке система розподілу пакетів?
Андрій Дроздюк

@drozzy: Наприклад, RPM, що використовується OpenSuse, або apt, що використовується дистрибутивами на базі Debian, або портати, що використовуються Gentoo тощо. В основному це інструмент для встановлення програмного забезпечення.
Фелікс Клінг,

0

Я зробив це за допомогою навігатора anaconda. Я встановив навігатор anaconda і створив два різні середовища розробки з різними версіями python

і перемикатися між різними версіями python, перемикаючи або активуючи та деактивуючи середовища.

спочатку встановіть навігатор anaconda, а потім створіть середовища.

дивіться тут довідку щодо управління середовищами

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

Ось відео, як це зробити з conda

https://youtu.be/EGaw6VXV3GI

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