okpython.net
Все для начинающих

Установка библиотек и окружения Python

Установка сторонних библиотек в Python

Ранее мы уже познакомились с порядком подключения дополнительных модулей и пакетов, входящих в состав стандартной библиотеки. Однако в Python имеется возможность расширения ядра и за счет использования сторонних библиотек. А это более 90 000 модулей и пакетов, которые могут быть достаточно легко установлены из раздела Python Package Index (PyPI) официального сайта с помощью утилиты pip.

Менеджер пакетов pip (от англ. Package Installer for Python ) – это свободно распространяемая консольная утилита, которая используется для установки и управления сторонними программными пакетами и библиотеками, написанными на Python.

Следует отметить, что включение pip в состав большинства последних дистрибутивов Python, начиная с версии 3.4, дефакто сделало его стандартным менеджером пакетов языка. И даже несмотря на отсутствие графической оболочки, данная утилита интуитивно понятна и довольно проста в использовании. Полную документацию по данному менеджеру пакетов можно посмотреть на соответствующей странице его официального сайта. Здесь же мы рассмотрим лишь несколько основных моментов, дающих наглядное представление о порядке его использования.

Начнем с просмотра информации о версии менеджера, входящего в текущий дистрибутив Python (см. пример №1).

Код Результат pythonCodes
# Модуль os для работы с ОС.
import os

# Получаем текущую версию менеджера.
os.system('pip3 --version')

# Более надежный вариант, но в Линуксе 
# используйте 'python3 -m pip --version'.
os.system('python -m pip --version')
input()
pip 21.2.4 from C:\python\lib\site-packages\pip (python 3.10)	
pip 21.2.4 from C:\python\lib\site-packages\pip (python 3.10)







	

Пример №1. Просмотр версии менеджера пакетов pip.

Как видим, для доступа к pip из скрипта мы использовали метод os.system(), передав ему имя менеджера и через пробел добавив требуемую команду (в нашем случае это --version). Аналогичным образом можно запускать на выполнение и другие команды менеджера. Перечислим наиболее востребованные из них.

  • --version – вывести текущую версию pip.
  • help – показать справку по доступным командам.
  • install --upgrade pip – обновить утилиту.
  • install package_name – установить пакет последней версии. Если нужна конкретная версия пакета, необходимо указывать ее в формате install package_name==specific_version, например, install numpy==1.23.4. Можно также указывать минимально допустимую версию, тогда нужно использовать формат install 'package_name>=minimum_version', например, install 'numpy>=1.23.4'.
  • show package_name – показать информацию о пакете.
  • list – показать список уже установленных пакетов (самостоятельно можете посмотреть их в домашнем каталоге Питона в lib\site-packages).
  • uninstall package_name – деинсталлировать пакет.
  • install --force-reinstall package_name – принудительно переустановить пакет (либо установить, если он отсутствует).
  • freeze > requirements.txt – команда создает обычный текстовый документ requirements.txt, в котором по одному в строке перечисляются все установленные и необходимые для работы данного python-приложения программные пакеты.
  • install -r requirements.txt – команда устанавливает в текущее окружение (обычно активированное виртуальное окружение) все перечисленные в файле зависимости проекта программные пакеты. Обычно это необходимо при переносе проекта на другую машину (подробнее об этом чуть ниже).

Находясь в командной оболочке текущей операционной системы, вместо префикса pip3 к командам лучше использовать префиксы python3 -m pip для ОС Ubuntu или python -m pip для ОС Windows, поскольку запуск менеджера в качестве исполняемого файла Python позволит избежать возможных проблем с правами доступа, например, при попытке обновления самого менеджера.

Не смотря на то, что список команд менеджера получился неполный, этих возможностей вполне хватит для управления установкой из PyPI практически любых сторонних пакетов и библиотек (см. пример №2).

Код Результат pythonCodes
# Модуль os для работы с ОС.
import os

# Устанавливаем пакет Pillow.
os.system('pip3 install Pillow')
input()

# Выводим инф-цию о Pillow.
os.system('pip3 show Pillow')
input()

# Выводим инф-цию об установленных пакетах.
os.system('pip3 list')
input()
 
# Удаляем пакет Pillow.
os.system('pip3 uninstall Pillow')
input()



# os.system(command) позволяет запустить
# или /выполнить внешнюю команду в оболочке.

 
Collecting Pillow
  Downloading Pillow-9.2.0-cp310-cp310-win_amd64.whl (3.3 MB)
     |████████████████████████████████| 3.3 MB 41 kB/s
Installing collected packages: Pillow
Successfully installed Pillow-9.2.0

Name: Pillow
Version: 9.2.0
Summary: Python Imaging Library (Fork)
...
Location: c:\python\lib\site-packages

Package    Version
---------- -------
Pillow     9.2.0
pip        21.2.4
setuptools 58.1.0

Found existing installation: Pillow 9.2.0
Uninstalling Pillow-9.2.0:
  Would remove:
    c:\python\lib\site-packages\pil\*
    c:\python\lib\site-packages\pillow-9.2.0.dist-info\*
Proceed (Y/n)? y
  Successfully uninstalled Pillow-9.2.0

Пример №2. Использование pip в скриптах.

Обратите внимание, что по умолчанию менеджер устанавливает библиотеки в общесистемное окружение. В нашем случае установка производилась в каталог c:\python\lib\site-packages (ОС Windows). Если же за компьютером работает несколько человек и возникает необходимость в установке библиотек в какое-то конкретное пользовательское окружение, следует использовать после основной команды опцию --user. Так при использовании инструкции 'install --user Pillow', мой интерпретатор установил библиотеку в каталог моего окружения c:\users\petr\appdata\roaming\python\python310\site-packages. Далее нас будут больше интересовать виртуальные окружения, при активации которых все пакеты будут устанавливаться не в системное, а в текущее активное виртуальное окружение. В любом случае, после успешного добавления все сторонние библиотеки и пакеты становятся доступны в целевом окружении для импортирования инструкцией import как самые обычные модули стандартной библиотеки.

Готовый скрипт для установки и управления сторонними библиотеками вам предстоит написать в качестве задания в разделе «Простейшие скрипты и программы» нашего сборника задач и упражнений по языку программирования Python.

Использование виртуального окружения в Python

В ходе разработки python-приложений практически каждый разработчик время от времени сталкивается с рядом проблем, связанных с использованием различных наборов версий интерпретатора и сопутствующих библиотек. Дело в том, что приложения могут быть рассчитаны на использование отличных друг от друга наборов версий и, кроме того, для многих приложений такой набор изначально подразумевается статическим. Однако библиотеки из общесистемного или пользовательского окружения постоянно и неравномерно обновляются, а значит рано или поздно избежать конфликтов версий уже не получится. Именно для таких случаев и предусмотрена возможность создания так называемых виртуальных окружений.

Виртуальное окружение Python (от англ. virtual environment) – это изолированная среда для разработки python-проектов, использующая собственный набор из необходимой версии интерпретатора Python и сопутствующих библиотек.

Начиная с версии 3.3 в раздел «Software Packaging and Distribution» стандартной библиотеки Python был добавлен модуль venv, позволяющий без особых хлопот создавать виртуальные окружения для наших проектов (см. пример №3).

Код pythonCodes
# Будем считать, что наш скрипт main.py
# находится в каталоге проекта my_prj. 

# Импортируем модуль venv станд. библиотеки.
import venv

# Создаем виртуальное окружение в my_prj.
venv.create('./venv', with_pip=True)

# Можно и через основной класс модуля.
# Создаем экземпляр класса вирт. окруж.
# v = venv.EnvBuilder(with_pip=True)
# Создаем виртуальное окружение в папке prj_2.
# v.create('./prj_2/venv')


  

Пример №3. Создание вируальных сред с помощью модуля venv.

В результате выполнения скрипта примера в каталоге проекта my_prj будет создан подкаталог виртуального окружения venv с необходимым наборов файлов для его функционирования. Наиболее важными из них являются:

  • \lib\site-packages\ (для ОС Windows) или /lib/python*.*/site-packages/ (для ОС Ubuntu) – используются для хранения устанавливаемых в виртуальное окружение пакетов. Только что созданное окружение обычно включает установленный пакет менеджера pip (если создание окружения выполнялось с параметром with_pip=True) и пакет Setuptools. Далее, когда виртуальное окружение будет активировано, менеджер pip будет автоматически устанавливать все пакеты именно в данный каталог, а не в системный.
  • \Scripts\ (для ОС Windows) или /bin/ (для ОС Ubuntu) – здесь располагается копия интерпретатора python, копия исполняемого файла pip, а также скрипты для активации и деактивации виртуального окружения.

Создавать виртуальные окружения можно и при помощи командной строки. Из нее также довольно просто активировать и деактивировать виртуальные окружения. Для этого в ОС Windows используются следующие команды:

  • python -m venv venv_path или py -*.* -m venv venv_path (если установлена утилита «Python Launcher») – создает виртуальное окружение по пути venv_path.
  • venv_path\Scripts\activate.bat или venv_path\Scripts\Activate.ps1 для Windows PowerShell – активирует созданное виртуальное окружение.
  • deactivate – деактивирует текущее активное виртуальное окружение (см. пример №4).

Пример №4. Работа с виртуальным окружением в Windows.

В примере мы создали виртуальное окружение для проекта my_prj, состоящего всего из одного файла main.py, в котором мы прописали инструкции для вывода пути к файлу интерпретатора (print(sys.executable)), а также информации об используемой версии Python (print(sys.version_info)). Данный файл мы запускали до активации виртуального окружения, во время активного состояния окружения (в самом начале командных строк стала появляться подсказка (venv), свидетельствующая о том, что активировано виртуальное окружение) и после деактивации виртуального окружения. Соответственно ситуации менялся и результат выполнения скрипта: вне виртуального окружения вся выводимая информация указывала на системный интерпретатор (у меня по умолчанию используется Python 3.11), а при активном состоянии виртуального окружения – на интерпретатор виртуального окружения проекта, при создании которого использовался Python 3.9.

Для ОС Ubuntu команды будут несколько отличаться (при этом модуль venv предварительно должен быть установлен отдельной командой sudo apt install python3-venv):

  • python3 -m venv venv_path – создает виртуальное окружение по пути venv_path, например, python3 -m venv ./venv.
  • source venv_path/bin/activate – активирует созданное виртуальное окружение, например, source ./venv/bin/activate.
  • deactivate – деактивирует текущее активное виртуальное окружение (см. пример №5).

Пример №5. Работа с виртуальным окружением в Ubuntu.

Как видим, в Линуксе все довольно похоже, но, например, не стоит забывать, что в командной строке вне виртуального окружения здесь стоит использовать команду python3 (или python3.*, если нужна какая-то конкретная установленная версия), хотя при активном виртуальном окружении достаточно использовать команду python, поскольку автоматически будет использоваться интерпретатор виртуального окружения той версии, под которой оно было создано.

Вовсе необязательно активировать созданное виртуальное окружение каждый раз, когда требуется запустить проект. В обеих операционных системах можно прописать путь к интерпретатору своего виртуального окружения в первой строке запускаемого скрипта. Делается это с помощью shebang-строки в формате #!evn_path\Scripts\python.exe для ОС Windows и #!evn_path\bin\python для ОС Ubuntu (см. пример №6).

Код pythonCodes
# Так выглядит код файла main.py
# проекта my_prj из примеров №4 и №5.
			
# Код для ОС Windows.
			
#!.\venv\Scripts\python.exe
import sys
print(sys.executable)
print(sys.version_info)

# Код для ОС Ubuntu.

#!./venv/bin/python
import sys
print(sys.executable)
print(sys.version_info)

Пример №6. Использование shebang-строки в python-скрипте.

Здесь важно помнить, что формат конца строк в этих системах отличается, а это может привести к неработоспособности всего скрипта. Кроме того, такие файлы из командной строки нужно запускать напрямую без использования команды запуска интерпретатора, указав лишь путь к файлу (и сделав их исполняемыми при необходимости). При чем в ОС Ubuntu, находясь в каталоге скрипта, нужно указывать помимо имени файла еще и текущую директорию в формате ./file_name.py (см. пример №7).

Пример №7. Запуск python-скриптов с shebang-строкой.

Если запускать скрипт с shebang-строкой не из консоли, а обычным двойным кликом мыши по ярлыку, запускаться также будет интерпретатор виртуального окружения, а не системный интерпретатор. Тот же эффект будет получен и при использовании консольной команды start main.py в ОС Windows.

Автоматизировать процесс запуска проекта в своем окружении можно и при помощи создания скриптов-оберток, которые будут активировать виртуальное окружение и запускать в нем главный файл проекта. Для ОС Windows следует использовать командный файл *.bat, а для ОС Ubuntubash-скрипт.

Что касается переноса проекта с виртуальным окружением на другую машину, то здесь необходимо придерживаться следующей последовательности действий.

  • Активируем виртуальное окружение проекта.
  • Сохраняем все зависимости командой python -m pip freeze > requirements.txt.
  • Сам каталог виртуального окружения удаляем (именно поэтому не стоит хранить файл requirements.txt в этом каталоге).
  • На новом месте виртуальное окружение проекта устанавливаем заново, не забыв использовать для него требуемую версию Python.
  • Активируем виртуальное окружение проекта.
  • Восстановливаем все зависимости, установив их командой python -m pip install -r requirements.txt.
  • Если никаких работ внутри окружения не предвидится, деактивируем его.

Готовую учебную программу «Консольный менеджер проектов» вам предстоит разобрать в качестве задания в разделе «Python :: Коды, программы, скрипты». Данный менеджер – это отличная практическая возможность закрепить теоретические знания по работе с виртуальными окружениями, которые далее будут присутствовать практически в любом разрабатываемом вами проекте.

Краткие итоги параграфа

  • Для подключения дополнительных модулей и пакетов, не входящих в состав стандартной библиотеки Python, широко используется менеджер пакетов pip, который довольно просто позволяет устанавливать пакеты из раздела Python Package Index официального сайта. Если он успешно установлен, обратиться к нему из командной строки можно через python -m pip для ОС Windows или python3 -m pip для ОС Ubuntu добавив через пробел необходимую команду. Перечислим некоторые из них:
    • --version – вывести текущую версию pip.
    • help – показать справку по доступным командам.
    • install --upgrade pip – обновить утилиту.
    • install package_name – установить пакет последней версии. Если нужна конкретная версия пакета, необходимо указывать ее в формате install package_name==specific_version, например, install numpy==1.23.4. Можно также указывать минимально допустимую версию, тогда нужно использовать формат install 'package_name>=minimum_version', например, install 'numpy>=1.23.4'.
    • show package_name – показать информацию о пакете.
    • list – показать список уже установленных пакетов (самостоятельно можете посмотреть их в домашнем каталоге Питона в lib\site-packages).
    • uninstall package_name – деинсталлировать пакет.
    • install --force-reinstall package_name – принудительно переустановить пакет (либо установить, если он отсутствует).
    • freeze > requirements.txt – команда создает обычный текстовый документ requirements.txt, в котором по одному в строке перечисляются все установленные и необходимые для работы данного python-приложения программные пакеты.
    • install -r requirements.txt – команда устанавливает в текущее окружение (обычно активированное виртуальное окружение) все перечисленные в файле зависимости проекта программные пакеты. Обычно это необходимо при переносе проекта на другую машину (подробнее об этом чуть ниже).
  • По умолчанию менеджер устанавливает пакеты в общесистемное окружение, но если будет активировано виртуальное окружение некоторого проекта, все пакеты будут устанавливаться не в системное, а в текущее активное виртуальное окружение.
  • Виртуальное окружение представляет собой изолированную среду для разработки python-проектов, которое включает собственный набор из необходимой версии интерпретатора Python и сопутствующих библиотек, которые следует устанавливать и обновлять, когда оно находится в активированном состоянии.
  • Для работы с виртуальными окружениями в ОС Windows используются следующие команды:
    • python -m venv venv_path или py -*.* -m venv venv_path – создает виртуальное окружение по пути venv_path (во втором случае должна быть установлена утилита «Python Launcher»).
    • venv_path\Scripts\activate.bat или venv_path\Scripts\Activate.ps1 для Windows PowerShell – активирует созданное виртуальное окружение.
    • deactivate – деактивирует текущее активное виртуальное окружение.
  • Для ОС Ubuntu команды будут несколько отличаться (при этом модуль venv предварительно должен быть установлен отдельной командой sudo apt install python3-venv):
    • python3 -m venv venv_path – создает виртуальное окружение по пути venv_path.
    • source venv_path/bin/activate – активирует созданное виртуальное окружение.
    • deactivate – деактивирует текущее активное виртуальное окружение.
  • Создать виртуальное окружение можно также и с помощью модуля venv, импортировав его в целевой скрипт, а затем воспользовавшись функцией venv.create() или классом venv.EnvBuilder() и его методом create().
  • Чтобы не активировать созданное виртуальное окружение каждый раз, когда требуется запустить проект, в обеих операционных системах можно прописать путь к интерпретатору своего виртуального окружения в первой строке запускаемого скрипта. Делается это с помощью shebang-строки в формате #!evn_path\Script\python.exe для ОС Windows и #!evn_path\bin\python для ОС Ubuntu (здесь следует быть внимательным с форматом конца строк, т.к. он отличается в этих системах, что может привести к неработоспособности всего скрипта). Также можно создать скрипты-обертки, которые будут активировать виртуальное окружение и запускать в нем главный файл проекта. Для ОС Windows следует использовать командный файл *.bat, а для ОС Ubuntubash-скрипт.
  • При переносе проекта на другой компьютер все зависимости проекта предварительно сохраняются в файле requirements.txt, а сам каталог с виртуальным окружением удаляется. На новом месте совершается обратный процесс: заново устанавливается виртуальное окружение для заданной версии Python, а также восстанавливаются все зависимости из файла requirements.txt.

Вопросы и задания для самоконтроля

1. Для чего используется менеджер пакетов pip? Показать решение.

Ответ. Менеджер пакетов pip используется для установки и управления сторонними программными пакетами и библиотеками, написанными на Python. А это более 90 000 модулей и пакетов, которые могут быть достаточно легко установлены из раздела PyPI официального сайта.

2. Какую команду менеджера нужно использовать, чтобы установить пакет последней версии? Удалить его? Показать решение.

Ответ. Для установки пакета последней версии предназначена команда install package_name. Если нужна конкретная версия пакета, необходимо указывать ее в формате install package_name==specific_version. Можно также указывать минимально допустимую версию, тогда нужно использовать формат install 'package_name>=minimum_version'. Деинсталлировать установленный пакет можно командой uninstall package_name.

3. Напишите полную консольную команду для сохранения зависимостей текущего окружения в файл requirements.txt, а также для установки их обратно из файла. Показать решение.

Ответ. В ОС Ubuntu: python3 -m pip freeze > requirements.txt (туда) и python3 -m pip install -r requirements.txt (обратно). В ОС Windows: python -m pip freeze > requirements.txt (туда) и python -m pip install -r requirements.txt (обратно). Если все установлено правильно, то сработают также общие для обеих систем команды pip3 freeze > requirements.txt (туда) и pip3 install -r requirements.txt (обратно).

4. Что представляет из себя виртуальное окружение? Показать решение.

Ответ. Виртуальное окружение Python – это изолированная среда для разработки python-проектов, использующая собственный набор из необходимой версии интерпретатора Python и сопутствующих библиотек.

5. Напишите команду для создания виртуального окружения в подкаталоге virt, зная, что в командной оболочке вы находитесь в корневом каталоге проекта. Используйте для этого Python 3.8. Показать решение.

Ответ. В ОС Windows: py -3.8 -m venv .\virt. В ОС Ubuntu: python3.8 -m venv ./virt.

6. Как создать виртуальное окружение из скрипта, использовав для этого модуль venv стандартной библиотеки? Показать решение.

Ответ. Необходимо импортировать модуль venv, а затем воспользоваться методом venv.create или классом venv.EnvBuilder и его методом create (посмотрите еще раз пример №3).

7. Как активировать и деактивировать виртуальное окружение, находясь в командной оболочке в корневом каталоге проекта и зная, что виртуальное окружение было установлено в каталог prj_venv? Показать решение.

Ответ. Для активации виртуального окружения необходимо выполнить команду .\prj_venv\Scripts\activate.bat для ОС Windows или source ./prj_venv/bin/activate для ОС Ubuntu. Деактивация производится общей командой deactivate.

8. Как запустить проект в своем виртуальном окружении без его предварительной активации? Показать решение.

Ответ. Чтобы не активировать созданное виртуальное окружение каждый раз, когда требуется запустить проект, в обеих операционных системах можно прописать путь к интерпретатору своего виртуального окружения в первой строке запускаемого скрипта. Делается это с помощью shebang-строки в формате #!evn_path\Script\python.exe для ОС Windows и #!evn_path\bin\python для ОС Ubuntu (здесь следует быть внимательным с форматом конца строк, т.к. он отличается в этих системах, что может привести к неработоспособности всего скрипта). Также можно создать скрипты-обертки, которые будут активировать виртуальное окружение и запускать в нем главный файл проекта. Для ОС Windows следует использовать командный файл *.bat, а для ОС Ubuntubash-скрипт.

9. Назовите основные этапы переноса проекта с виртуальным окружением на другой компьютер? Показать решение.

Ответ. При переносе проекта на другой компьютер все зависимости проекта предварительно сохраняются в файле requirements.txt, а сам каталог с виртуальным окружением удаляется. На новом месте совершается обратный процесс: заново устанавливается виртуальное окружение для заданной версии Python, а также восстанавливаются все зависимости из файла requirements.txt.

10. Дополнительные упражнения и задачи по теме расположены в разделе «Утилита pip и виртуальные окружения» нашего сборника задач и упражнений по основам языка программирования Python.

Быстрый переход к другим страницам