Как установить конкретную версию python
Перейти к содержимому

Как установить конкретную версию python

  • автор:

Как установить конкретную версию python

На одной рабочей машине одновременно может быть установлено несколько версий Python. Это бывает полезно, когда идет работа с некоторыми внешними библиотеками, которые поддерживают разные версии python, либо в силу каких-то других причин нам надо использовать несколько разных версий. Например, на момент написания статьи последней и актуальной является версия Python 3.11 . Но, допустим, необходимо также установить версию 3.10 , как в этом случае управлять отдельными версиями Python?

Windows

На странице загрузок https://www.python.org/downloads/ мы можем найти ссылку на нужную версию:

Управление несколькими версиями Python

И также загрузить ее и установить:

Установка разных версий Python на Windows

Чтобы при использовании интерпретатора Python не прописывать к нему весь путь, добавим при установке его в переменные среды. Но здесь надо учитывать, что в переменных среды может содержаться несколько путей к разным интерпретаторам Python:

Установка разных версий Python на Windows в переменные среды

Та версия Python, которая находится выше, будет версией по умолчанию. С помощью кнопки «Вверх» можно нужную нам версию переместить в начало, сделав версией по умолчанию. Например, в моем случае это версия 3.11. Соответственно, если я введу в терминале команду

python --version

или

py --version

то консоль отобразит версию 3.11:

C:\python>python --version Python 3.11.0

Для обращения к версии 3.10 (и всем другим версиям) необходимо использовать указывать номер версии:

C:\python>py -3.10 --version Python 3.10.9

например, выполнение скрипта hello.py с помощью версии 3.10:

py -3.10 hello.py

Подобным образом можно вызывать и другие версии Python.

MacOS

На MacOS можно установить разные версии, например, загрузив с официального сайта пакет установщика для определенной версии.

Для обращения к определенной версии Python на MacOS указываем явным образом подверсию в формате python3.[номер_подверсии] . Например, у меня установлена версия Python 3.10. Проверим ее версию:

python3.10 --version

Аналогично обращении к версии python3.9 (при условии если она установлена)

python3.9 --version

К примеру выполнение скрипта hello.py с помощью версии python 3.10:

python3.10 hello.py

Linux

На Linux также можно установить одновременно несколько версий Python. Например, установка версий 3.10 и 3.11:

sudo apt-get install python3.10 sudo apt-get install python3.11

Одна из версий является версий по умолчанию. И для обращения к ней достаточно прописать python3 , например, проверим версию по умолчанию:

python3 --version

Для обращения к другим версиям надо указывать подверсию:

python3.10 --version python3.11 --version

Например, выполнение скрипта hello с помощью версии Python 3.10:

python3.10 hello.py

Но может сложиться ситуация, когда нам надо изменить версию по умолчанию. В этом случае применяется команда update-alternatives для связывания определенной версии Python с командой python3. Например, мы хотим установить в качестве версии по умолчанию Python 3.11. В этом случае последовательно выполним следующие команды:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2

Числа справа указывают на приоритет/состояние. Так, для версии 3.11 указан больший приоритет, поэтому при обращении к python3 будет использоваться именно версия 3.11 (в моем случае это Python 3.11.0rc1)

Управление версиями Python в linux

С помощью команды

sudo update-alternatives --config python3

можно изменить версию по умолчанию

Установка нескольких версий Python параллельно при помощи pyenv

В большинстве операционных систем Python предустановлен (ну, кроме Windows, но даже там теперь есть команда python , которая предложит установить интерпретатор из магазина приложений). В Unix-подобных операционных системах, таких как Linux и MacOS, Python пустил корни очень глубоко. Множество компонентов ОС рассчитывают, что Python установлен и работает стабильно. Это и хорошо, и плохо.

Это хорошо, потому что хотя бы какой-то Python в большинстве систем доступен из коробки — бери и пользуйся. Иногда доступно сразу несколько версий интерпретатора, например, python2 указывает на устаревшую версию 2.7, python3 — на какую-нибудь стабильную версию Python 3, типа 3.6 или 3.7, а просто python указывает либо на одно, либо на другое (в последнее время предпочтение чаще отдаётся третьей версии). Для обучения или для тестирования этого может быть вполне достаточно.

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

Иногда нужно иметь сразу несколько версий Python для работы над разными проектами, например, 3.7 и 3.8. В некоторых ОС нужные версии можно установить через пакетный менеджер (например, в Fedora через dnf) — из основных репозиториев или из сторонних. Но зачастую такие репозитории содержат не все релизы интерпретаторов, а лишь выбранное мейнтейнерами репозиториев подмножество.

Решение у всех этих проблем одно — нужно установить недостающие версии интерпретатора, какими бы они ни были. Этому и посвящён пост.

pyenv

pyenv — утилита, которая позволяет легко переключаться между несколькими версиями интерпретатора Python, а также устанавливать новые. Позволяет устанавливать, наверное, вообще все известные науке версии интерпретаторов Python. Работает просто и незаметно.

pyenv — это всего лишь один из последователей аналогичного инструмента из мира Ruby — rbenv . Есть ещё и nodenv для Node.js, который тоже вдохновился rbenv .

Проект написан целиком на bash . Это значит, что он никак не зависит от Python — было бы забавно, если бы для установки Python нужен был бы Python. Также это означает, что на Windows pyenv работать не будет (тред с обсуждением). Следует отметить, что в Windows проблема установки нескольких версий и не возникает — там всегда можно скачать и установить сколько угодно интерпретаторов с официального сайта, а pylauncher поможет выбрать из них нужную версию. Кроме того, пользователи современных версий Windows могут использовать pyenv внутри WSL (Windows Subsystem for Linux). Ещё это означает, что у авторов много отваги — я бы не решился писать на bash что-то настолько сложное. Как же хорошо, что всё уже написано.

Установка

  1. Скачаем pyenv . Установка pyenv производится простым клонированием git-репозитория. У проекта есть умный скрипт, который скачает pyenv и его сотоварищей:
$ curl https://pyenv.run | bash 
WARNING: seems you still have not added 'pyenv' to the load path. # Load pyenv automatically by adding # the following to ~/.bashrc: export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" 

В случае с zsh нужно будет добавить те же самые строки в ~/.zshrc . В случае с fish в связи с особенностями самого шелла инструкции отличаются:

# Load pyenv automatically by adding # the following to ~/.config/fish/config.fish: set -x PATH "~/.pyenv/bin" $PATH status --is-interactive; and . (pyenv init -|psub) status --is-interactive; and . (pyenv virtualenv-init -|psub) 
$ pyenv --version pyenv 1.2.18 

Как это работает

pyenv работает благодаря манипуляциям над переменной окружения $PATH . Эта переменная содержит в себе список директорий, в которых ОС будет искать исполняемые файлы, вызванные без указания полного пути. Именно благодаря этой переменной мы можем в терминале вместо /bin/cat вызывать просто cat . Когда мы набираем в терминале имя программы ( cat ), ОС перебирает директории из $PATH слева направо, пока в одной из них (в данном примере /bin ) не найдёт программу с именем cat , которую и запустит. Поиск прекращается после первого совпадения.

Команда pyenv init - , которую мы добавили в конфиг шелла ( .bashrc или аналог) добавляет директории pyenv в самое начало переменной $PATH . Зачем это нужно? pyenv создаёт небольшие исполняемые файлы, так называемые файлы-прослойки (shims), для всех команд, которыми он собирается управлять, например, python , pip , ipython и так далее. Эти файлы-прослойки должны попасть в $PATH прежде самих управляемых программ и "затенить" системные python , pip и так далее. Эти файлы-прослойки в конечном счёте просто вызывают сам pyenv с нужными аргументами. Таким образом pyenv перехватывает обращения к некоторым именам, и анализируя поступившую к нему информацию, принимает решение о том, какую именно версию Python нужно запустить. При выборе версии pyenv принимает во внимание следующие факторы в указанном порядке:

  1. Переменная окружения PYENV_VERSION , если указана. В неё можно указать какую конкретно версию Python нужно использовать в рамках текущего сеанса. Удобно, если вам по какой-то причине понадобится сменить выбранную версию интерпретатора, например, в одном из окон терминала.
  2. Локальная версия Python. При помощи специального файла .python-version можно настроить версию интерпретатора для определенного проекта. Захо́дите внутрь директории ( cd project/ ), и pyenv внезапно понимает, что нужно сменить Python. Выхо́дите обратно — версия Python меняется на глобальную. Это распространяется и на все поддиректории проекта — pyenv рекурсивно ищет файл .python-version вверх по файловой системе, пока не дойдёт до корня.
  3. Глобальная версия Python. В файле ~/.pyenv/version записана глобальная версия Python, которая будет использоваться по умолчанию, если не сконфигурирована локальная версия.

Вам вряд ли придётся вручную трогать эти файлы, потому что у pyenv есть удобные команды ( pyenv local и pyenv global ), чтобы ими управлять, но знать о файлах всё равно полезно.

Использование

Установка новой версии Python

Сначала посмотрим, какие версии Python pyenv может установить:

$ pyenv install --list . 3.6.0 3.6-dev 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9 3.6.10 3.7.0 3.7-dev 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.8.0 3.8-dev 3.8.1 3.8.2 3.9.0a6 3.9-dev . 

Список довольно длинный, поэтому я его подсократил. Обычно вас будут интересовать такие версии, как 3.8.2 или 3.7.7 — это версии самой распространённой реализации интерпретатора CPython. Но если вам нужна экзотика, то pyenv умеет устанавливать любые сорта интерпретаторов Python ( pypy3.6-7.3.0 , stackless-3.7.5 , jython-2.7.1 , ironpython-2.7.7 , micropython-1.12 и т.д.). Для вас ведь не стало новостью, что существует много разных реализаций интерпретатора Python?

Установим CPython 3.8.2:

$ pyenv install 3.8.2 Downloading Python-3.8.2.tar.xz. Installing Python-3.8.2. 

Через пару минут ожидания ваш новоиспечённый Python будет готов.

Можно сразу же назначить эту версию глобальной:

$ pyenv global 3.8.2 $ python -V Python 3.8.2 

Давайте в целях демонстрации установим ещё парочку интерпретаторов:

$ pyenv install 2.7.18 $ pyenv install 3.9.0a6 

Получим список установленных версий интерпретатора:

$ pyenv versions 2.7.18 * 3.8.2 (set by /home/br0ke/.pyenv/version) 3.9.0a6 

Кстати, если нужно, то можно делать активными сразу несколько версий одновременно:

$ pyenv global 3.8.2 2.7.18 

Теперь вывод версий покажет следующее:

$ pyenv versions * 2.7.18 (set by /home/br0ke/.pyenv/version) * 3.8.2 (set by /home/br0ke/.pyenv/version) 3.9.0a6 

А работать это будет вот таким образом:

$ python -V Python 3.8.2 $ python3 -V Python 3.8.2 $ python2 -V Python 2.7.18 

Грубо говоря, та версия, которая указана первой (3.8.2), имеет приоритет и занимает все нужные ей имена. Следующие версии (2.7.18) могут занять любые оставшиеся свободные имена (в данном случае, это только имя python2 ).

А файл глобальной версии ~/.pyenv/version на данный момент имеет вот такое содержимое:

$ cat ~/.pyenv/version 3.8.2 2.7.18 

Локальная версия

Давайте создадим директорию и войдём в неё:

$ mkdir my_project $ cd my_project 

Представим, что в этой директории мы будем разрабатывать некий проект, на котором мы хотим опробовать фишки нового Python 3.9. Сообщим об этом pyenv :

$ pyenv local 3.9.0a 

В директории появился файл .python-version со следующим содержимым:

$ cat .python-version 3.9.0a6 

На данный момент список версий показывает следующее (удобно использовать эту команду, чтобы понять какую версию и почему pyenv активирует):

$ pyenv versions 2.7.18 3.8.2 * 3.9.0a6 (set by /home/br0ke/my_project/.python-version) 

Изменения немедленно вступили в силу:

$ python -V Python 3.9.0a6 

Но эта конфигурация никак не влияет на работу pyenv вне директории проекта:

$ cd .. $ python -V 3.8.2 

Как и в случае с глобальной конфигурацией, можно локально активировать сразу несколько версий интерпретатора.

Установим IPython

Часто бывает нужно установить какой-нибудь пакет так, чтобы он тоже стал доступен из командной строки. Допустим, что нам нужно установить ipython — более удобную версию REPL Python. Сделаем это:

$ cd my_project $ pip install ipython 
$ ipython Python 3.9.0a6 (default, May 3 2020, 16:58:20) Type 'copyright', 'credits' or 'license' for more information IPython 7.14.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: 

Программа сразу доступна, благодаря тому, что pyenv очень умный и создал новый файл-прослойку (shim) автоматически:

$ which ipython /home/br0ke/.pyenv/shims/ipython 

Вне директории с проектом ipython будет недоступен, ведь он же установлен в локальный интерпретатор 3.9.0a6 , а снаружи активирован другой интерпретатор — можете проверить самостоятельно.

Возникают ситуации, когда по какой-то причине прослойка не создалась или с ней случилось что-то ещё, например, удалилась:

$ rm $(which ipython) $ ipython No such file or directory 

Не беда! Можно попросить pyenv пересоздать их все заново:

$ pyenv rehash 

И всё работает снова:

$ ipython Python 3.9.0a6 (default, May 3 2020, 16:58:20) Type 'copyright', 'credits' or 'license' for more information IPython 7.14.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: 

Можно вообще добавить команду pyenv rehash в свой ~/.bashrc (или аналог), чтобы при запуске шелла гарантированно иметь рабочие файлы-прослойки (shims).

Заключение

pyenv — очень удобный и полезный инструмент в ситуациях, когда нужную вам версию Python нельзя установить средствами операционной системы. Я вообще предпочитаю устанавливать все нужные мне версии интерпретатора самостоятельно через pyenv или asdf , даже если ОС уже содержит точно такую же версию — пусть ОС использует свою копию для служебных целей, а я для разработки буду использовать свою собственную копию, где смогу проводить любые кровавые эксперименты, не боясь поломать ОС.

Обязательно подпишитесь на уведомления о новых постах в блоге, чтобы ничего не пропустить!

Дополнительное чтение

  • Репозиторий проекта на GitHub;
  • Туториал на RealPython;
  • Альтернатива: универсальный менеджер версий asdf .

Как установить библиотеку определенной версии в Python?

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

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

Привет всем! Делаю тут бота для Instagram (кстати, подписывайтесь на мой �� ) — который будет лайкать посты по указанным тегам, подписываться по заданным параметрам (и отписываться тоже) и все такое прочее. В основе лежит библиотека InstaPy (более подробно о ней — позже). В пока столкнулся с вопросом, который звучит как: «Как установить библиотеку определенной версии в Python?». Разберемся с этой проблемой!

Иногда бывает так, что установив библиотеку с помощью pip вы сталкиваетесь с проблемой — самая новая версия оказывается — не совсем вам подходит. И нужно установить библиотеку определенной версии. Для этого в командной строке вводим следующее (в качестве примера возьмем ту же самую библиотеку InstaPy, о которой говорил выше. Текущая версия библиотеки на момент написания поста: 0.6.13, а мне нужно установить версию: 0.6.12):

pip install instapy==0.6.12

ВСЕ! Фактически,, мы просто дали команду pip — установить библиотеку — и указали нужную нам версию. Кстати, для правильного удаления библиотеки из системы используйте следующую конструкцию:

pip uninstall instapy

т.е. даем команду pip деинсталировать библиотеку (да, этот метод не так красив как в PyCharm, но не оставляет всяческих хвостов в системе).

Спасибо за внимание! Как всегда — в случае возникновения вопросов пишите на почту или в Telegram!

Как установить определённую версию Python на Ubuntu

Author24 — интернет-сервис помощи студентам

Как установить определённую версию Python на Ubuntu и затем использовать именно её (интересует версия 3.7.5)?

Лучшие ответы ( 1 )

Здесь вы можете заказать любую студенческую или школьную работу.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как установить старую версию Python 2.7?
Есть одно приложение, которое, писалось на 2.7.6 и на других версиях не запускается. При попыте.

какую версию ubuntu установить на свой двухядерный ноутбук ?
мой ноутбук: - Intel® Centrino® Processor Technology featuring Intel® Core™ 2 Duo Processor -.

Как установить последнюю версию Firefox, не обновляя старую версию?
Для удаленной работы применяется цифровая подпись, но она работает только в Firefox не выше 51-й.

Установить pyqt4 для python 3.2 в Linux Ubuntu 12.04
Делал как тут. import PyQt4 В результате в Python 3.2 выдает ошибку, что не найден модуль.

196 / 162 / 41
Регистрация: 13.05.2019
Сообщений: 833
Как и всё остальное, через апт-гет инстал
432 / 333 / 62
Регистрация: 29.05.2018
Сообщений: 1,000

ЦитатаСообщение от Matrix3007 Посмотреть сообщение

Как и всё остальное, через апт-гет инстал

Что надо ввести, чтобы была установлена определённая версия?

sudo apt-get install python. а дальше?

196 / 162 / 41
Регистрация: 13.05.2019
Сообщений: 833
Ender Che, sudo apt-get install python3.7.5
432 / 333 / 62
Регистрация: 29.05.2018
Сообщений: 1,000

E: Unable to locate package python3.7.5 E: Couldn't find any package by glob 'python3.7.5' E: Couldn't find any package by regex 'python3.7.5'

196 / 162 / 41
Регистрация: 13.05.2019
Сообщений: 833

Ender Che,
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update

Впиши это и попробуй ещё раз

432 / 333 / 62
Регистрация: 29.05.2018
Сообщений: 1,000
Matrix3007, то же самое.
196 / 162 / 41
Регистрация: 13.05.2019
Сообщений: 833

Лучший ответ

Сообщение было отмечено u235 как решение

Решение

Ender Che, Попробуй так

sudo apt-get install libssl-dev openssl
wget https://www.python.org/ftp/pyt. -3.7.5.tgz
tar xzvf Python-3.7.5.tgz
cd Python-3.7.5
./configure
make
sudo make install

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как пересылать пользователя на определённую версию сайта, в зависимости от используемого браузера?
Всем привет! Только начал заниматься на JS. На HTML и CSS уже больше двух лет занимаюсь, тут помощь.

Установить/войти в Ubuntu. Есть windows и ubuntu. В ubuntu зайти не получается
Какими программами я пользовался, скрины bios, grub rescue итд пришлю столько сколько нужно. Я.

Как установить Recordset на определенную запись в БД
Мне нужно в таблице найти запись с максимальным значением (не выбрать с помощью SELECT, а.

Как установить Django в Определенную папку?
Я сделал так C:\WINDOWS\system32>cd /d D:\Python_proj\Django D:\Python_proj\Django>py -m pip.

Eclipse, как установить версию Java на 8
Добрый день, поступила задача переписать код c С# на java. Задачу выполнил, код переписал все.

Как установить новую версию Delphi?
Добрый вечер! Хочу изучать Delphi - начал с установки версии 10.3- и в процессе появляется.

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *