Где размещать виртуальные среды?

Где размещать виртуальные среды?

На моем компьютере будет много виртуальных сред, и я хотел бы иметь место, где они все хранятся. Как-то так $HOMEи подкаталоги не кажутся хорошими; слишком открыты. Есть какие-нибудь предложения или обоснования, почему я думаю неправильно?

Я думаю о /var/venv/. Есть мысли?

решение1

Для venvs вы, вероятно, захотите разместить их в подкаталоге $HOME, чтобы избежать проблем с ограничениями безопасности в apparmor или контейнерах, таких как docker.

Обратите внимание на ограничения в этом файле:

/etc/apparmor.d/abstractions/python

Теоретически вы можете поместить их в /opt, но venvs на самом деле специфичны для пользователя и ожидаются в домашнем каталоге пользователя. Локальный вариант невозможен из-за других ограничений распространения и того факта, что /usr официально предполагается общим в сети LSB.

Лично я следую модифицированной версии структуры golang.

~build/
       +$language/
                +bin/
                |    venv/
                |      |---Python2.7
                |      +---Python3.6
                +pkg
                +src/
                    |
                    +--- my_work/..
                    |          |---repo1
                    |          +---other_project
                    |
                    +-- external-repo.com/..

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

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

Связанный контент