
Auf meinem Computer befinden sich viele virtuelle Umgebungen und ich hätte gern einen Ort, an dem sie alle gespeichert sind. Irgendwie $HOME
scheinen Unterverzeichnisse nicht gut zu sein; zu exponiert. Irgendwelche Vorschläge oder Begründungen, warum ich falsch denke?
Ich denke darüber nach /var/venv/
. Irgendwelche Ideen?
Antwort1
Für Venvs möchten Sie sie wahrscheinlich in einem Unterverzeichnis von $HOME haben, um Probleme mit Sicherheitsbeschränkungen in Apparmor oder Containern wie Docker zu vermeiden.
Beachten Sie die Einschränkungen in dieser Datei:
/etc/apparmor.d/abstractions/python
Theoretisch könnten Sie sie in /opt ablegen, aber Venvs sind wirklich benutzerspezifisch und werden im Home-Verzeichnis des Benutzers erwartet. Lokal ist aufgrund anderer Verteilungsbeschränkungen und der Tatsache, dass /usr offiziell vom LSB als in einem Netzwerk gemeinsam genutzt angesehen wird, keine Option.
Ich persönlich folge einer modifizierten Version der Golang-Struktur.
~build/
+$language/
+bin/
| venv/
| |---Python2.7
| +---Python3.6
+pkg
+src/
|
+--- my_work/..
| |---repo1
| +---other_project
|
+-- external-repo.com/..
Dies erleichtert das Suchen und Verschieben von Inhalten und ist mit den durch Sicherheitsmodelle, Cgroups und andere Einschränkungen vorgegebenen Einschränkungen kompatibel, die mit der zunehmenden Popularität von Containern immer wichtiger werden.
Denken Sie daran, dass Venvs ursprünglich für das Projektverzeichnis gedacht waren. Obwohl die Realitäten der Kernabhängigkeiten des Betriebssystems und wichtige Versionsänderungen zu einer vermehrten Verwendung geführt haben, ist es dennoch vorzuziehen, sie so nah wie möglich am einzelnen Paket, Prozess oder Benutzer zu halten.