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

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

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

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

1
задан 21 August 2021 в 11:06

1 ответ

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

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

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

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

#!/bin/bash

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

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

$ source my-git.sh

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

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

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

1
ответ дан 4 September 2021 в 09:28

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

Похожие вопросы: