pipenv как изолированное место для запуска программы

Я новичок в операционной системе Linux и в настоящее время изучаю Ubuntu. Я подошел к той части, где вы строите виртуальную среду. Я читал, что я должен использовать pipenv вместо venv.

Моя идеальная цель использования виртуальной среды - создать изолированное место со всеми моими потребностями для запуска программы (легко очистить после того, как программа мне больше не нужна), но я узнал, что использую pipenv есть разница между пакетами python, которые могут быть установлен с помощью pipenv и других пакетов, таких как postgreSQL или git, которые нельзя установить с помощью pipenv.

Насколько мне известно, такие пакеты, как postgreSQL и git, будут установлены глобально (для всей системы), а пакеты python будут установлены в среде pipenv. Поскольку моей идеальной целью является создание изолированного места со всеми пакетами для запуска определенных программ, есть ли способ заставить это работать?

1 ответ

Я думаю, что виртуальные среды Python (управляемые с помощью venv или pipenv) просто предназначены для изоляции одной среды Python от другой, то есть, например, для того, чтобы убедиться, что ваше приложение Python работает с точной версией пакетов, которые ему требуются, и не конфликтует с требованиями другого приложения.

Это не имеет ничего общего с системными инструментами, отличными от Python. Итак, если вы хотите создать свою собственную экспериментальную среду с вашей версией git, postgreSQL и т. д., лучше всего создать виртуальную машину (ВМ) или контейнер. Если вы новичок в обоих, возможно, виртуальную машину легче понять и использовать (это все равно, что иметь выделенный ПК для экспериментов).

Тем не менее, в системах Unix, безусловно, возможно управлять различными версиями инструментов (например, git) на одной машине. Если вы разработчик, вы можете установить их локально (например, в ) и создайте сценарии оболочки установки, которые добавляют эти инструменты в , чтобы оболочка нашла их вместо системных.

Например, вы можете создать файл, такой как my-git.sh

      #!/bin/bash

PATH=~/local/git-1.2.3/bin:$PATH
export PATH

Затем, когда вы захотите использовать этот инструмент, в своем терминале вы можете ввести

      $ source my-git.sh

и после этого в следующий раз, когда вы вызовете git в своей оболочке, он будет использовать двоичный файл в (при условии, что он там есть) вместо системного.

Однако подобная установка гораздо сложнее и не обеспечивает полную изоляцию (например, общие библиотеки по-прежнему установлены в вашей системе).

Надеюсь это поможет.

Другие вопросы по тегам