
На моем компьютере будет много виртуальных сред, и я хотел бы иметь место, где они все хранятся. Как-то так $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 предназначались для размещения в каталоге проектов. Хотя реалии основных зависимостей ОС и основные изменения версий увеличили их использование, все равно предпочтительнее хранить их как можно ближе к отдельному пакету, процессу или пользователю.