Несколько версий 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, поэтому явно не «полностью независима» от ОС, как просит ОП. Для Windows процесс совсем другой, но такой же простой.
wwwayne
28

В Windows они устанавливаются в отдельные папки, «C: \ python26» и «C: \ python31», но исполняемые файлы имеют то же имя «python.exe».

Я создал еще одну папку «C: \ python», которая содержит «python.bat» и «python3.bat», которые служат оболочками для «python26» и «python31» соответственно, и добавил «C: \ python» к PATHпеременной среды.

Это позволяет мне набирать pythonили python3в моих оболочках Python .bat, чтобы запустить ту, которую я хочу.

В Linux вы можете использовать эту #!уловку, чтобы указать, какую версию скрипта вы хотите использовать.

Железный Человек
источник
Что добавить в эти файлы .bat?
Aidis
Не буду поддерживать этот ответ только потому, что он очень специфичен для Windows, и вопрос был связан с Linux, в противном случае отличная информация.
Джим Ахо,
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 для Linux в виде архива и переместите его в папку /usr/src.

Распакуйте загруженный пакет на место. (замените 'x' загруженной версией)

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

3) Скомпилируйте и установите исходный код Python

$ 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
@Roland pyenvбудет работать для этого. Из файла 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

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

Kohn1001
источник
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, или portage, используемый Gentoo и т. д. По сути, это инструмент для установки программного обеспечения.
Феликс Клинг,
0

Я сделал это с помощью навигатора анаконды. Я установил навигатор anaconda и создал две разные среды разработки с разными версиями python

и переключаться между различными версиями Python путем переключения, активации и деактивации сред.

сначала установите навигатор anaconda, а затем создайте среды.

см. справку здесь о том, как управлять средами

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

Вот видео, как это сделать с помощью conda

https://youtu.be/EGaw6VXV3GI

mohitesachin217
источник