|
|||||||
Использование 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-скриптами как обычно. |
|||||||
Так же в этом разделе:
|
|||||||
![]() |
|||||||
|
|||||||
|