MyTetra Share
Делитесь знаниями!
Использование venv в Python3 в Linux и установка сторонних модулей (пакетов) через pip3
Время создания: 22.08.2025 23:37
Автор: Xintrea
Текстовые метки: linux, venv, python, python3, виртуальное окружение, pip3, установка, программ, пакетов, запуск, исполнение
Раздел: Компьютер - Программирование - Язык Python
Запись: xintrea/mytetra_syncro/master/base/1755895030swzsdn84a6/text.html на raw.github.com

Использование виртуальных окружений (VENV) и сторонних пакетов, установленных через pip3, - это базовая часть любой разработки в Python.


Когда могут понадобиться VENV? Практически всегда, если в разработке используются python-пакеты (модули), которых нет в репозитарии Linux, или если для запуска ПО, написанного на Python используются особые версии модулей, которые отличают от того, что есть в системе.


Для того, чтобы начать работу с VENV, надо в начале установить поддержку VENV, которая обычно находится в пакете python3-venv:



# apt-get install python3-venv



Как работать с VENV?


В начале нужно создать окружение VENV с заданным именем. Кстати, окружений VENV можно создавать сколько угодно. Далее надо переключиться на это окружение. После переключения, в Python-скриптах будут доступны базовые пакеты и модули (т. е. не все), находящиеся в обычной системе, плюс те пакеты (модули), которые устанавливаются специально в этом окружении. Вот и все.



Создание VENV с заданным именем


Команда создания VENV окружения с именем myenv выглядит так:



python3 -m venv myenv



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


В результате будет создан каталог ~/.config/myenv, в котором будет находиться начальная структура файлов и подкаталогов, необходимая для работы этого окружения.



Переключение на VENV с заданным именем


После создания, необходимо переключиться на данное окружение. Иногда такое переключение еще называют активизацией. Происходит это следующей командой, все так же от того же обычного пользователя:



source ~/.config/myenv/bin/activate



Следует обратить внимание, что эту команду команду source с параметром нельзя помещать в отдельный bash-скрипт. Её именно надо выполнять вручную, и именно в той консоли, в которой происходит разработка. Связано это с особенностью команды source.



Команда source - это не отдельная программа, это именно встроенная в Bash команда. Команда source выполняет команды из файла, указанного в ее параметре, в текущей оболочке (shell), а не в дочернем процессе, как это происходило бы при обычном запуске bash-скрипта.



Если просто запустить скрипт ~/.config/myenv/bin/activate (да, это скрипт), то Bash создаст дочерний процесс, выполнит в нем команды, прописанные в ~/.config/myenv/bin/activate, и завершит процесс. Получается, что команды по переключению на VENV отработают в дочерном процессе, а потом этот процесс будет удален. И никакого переключения не произойдет.


Если же поместить саму команду "source ~/.config/myenv/bin/activate" в отдельный bash-скрипт, то при старте этого скрипта все так же создастся дочерний процесс, в нем отработает команда "source ~/.config/myenv/bin/activate", потом процесс завершится, и в текущей консоли все так же не произойдет переключения на VENV.


Таким образом, команду "source ~/.config/myenv/bin/activate" надо выполнять напрямую, в текущей консоли.


Признаком того, что переключение успешно состоялось, будет изменение приглашения ввода. Вместо стандартного:



user@host:~$>



Появится приглашение:



(myenv) user@host:~$>



Как установить пакет (модуль) через pip3 в нужный VENV?


После перехода в заданный VENV, можно от обычного пользователя запускать установку нужных пакетов, содержащих модули Python. Для python3 это делается через утилиту pip3.


Возможно, в начале, от рута, надо будет установить саму устилиту pip3 из стандартного репозитария Linux:



# apt-get install python3-pip



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



pip3 install readchar



Все, дальше можно работать с Python-скриптами как обычно.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования