|
|||||||
|
Использование 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-скриптами как обычно. Как узнать список пакетов, который установлен внутри VENV? Находясь в определенном VENV, можно дать команду: pip3 list В ответ будет выдан перечень пакетов, установленных внутри VENV: Package Version ------------- --------- certifi 2021.5.30 chardet 4.0.0 idna 2.10 pip 20.3.4 pkg-resources 0.0.0 requests 2.25.1 setuptools 44.1.1 urllib3 1.26.5 Как выйти из VENV? В момент активации VENV путем выполнения скрипта активации через команду source, в текущую bash-сессию внедряется bash-функция deactivate, которая может вызываться из командной строки просто путем написания ее имени. Так как функция существует в пределах той shell-сессии где был запущен VENV, то в любой директории можно выполнить команду: deactivate И произойдет выход из VENV. Копирование перечня установленных пакетов из одной VENV в другую Для копирования установленных пакетов в другую VENV-среду, можно использовать простую команду: pip3 freeze > requirements.txt Она создаст файл requirements.txt, в котором будет находится список всех установленных пакетов. Теперь можно выйти из старой VENV среды, перейти в другую виртуальную среду и импортировать пакеты следующей командой: pip3 install -r requirements.txt И тогда в новой среде будут установлены пакеты из списка, полученого в первой среде. |
|||||||
|
Так же в этом разделе:
|
|||||||
|
|||||||
|
|||||||
|