2017-12-31 65 views
0

Ich kann meine virtuelle Python-Umgebung von seinem Ordner aktivieren, indem Sie . bin/activate eingeben. Ich möchte stattdessen einen einzelnen Wortalias wie shazam aus dem Basisordner (oder anderswo) eingeben, der die Umgebung aktiviert, Änderungen an meinem Hauptprojektordner vornimmt und meine Projekte auflistet.Aktivieren Sie virtualenv mit Alias ​​

Ich habe versucht, einen Aliasnamen in Bashrc schaffen, die zu einer .sh-Datei mit spitz:

cd ~/path-to-virtual-environment 
. bin/activate 
cd ~/path-to-master-project-folder 
ls -a 

ich eine Erlaubnis verweigert Fehler bekommen, so lief ich chmod u+x <script file>. Das Skript wird jetzt ausgeführt, aber die VE wird nicht aktiviert, und während die Projektordner aufgelistet sind, befindet sich die Shell nicht im Hauptprojektordner. Ich würde eine Anleitung schätzen. Vielen Dank.

+1

besser noch, überprüfen Sie virtualenvwrapper, die es einfacher macht, virtualenv verwalten. https://virtualenvwrapper.readthedocs.io/en/latest/ – jdigital

+0

Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen. Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) wäre ein besserer Ort, um zu fragen. – jww

+0

Danke für die Vorschläge. Stack Overflow schien ein geeigneter Ort zu sein, da es um den Zugriff auf meine Entwicklungsumgebung geht und es weitere SO-Fragen zu Aliasen, Bash-Skripten und Zugriff auf virtuelle Umgebungen gibt (aber nicht ganz so, wie ich es versuche). – landrykid

Antwort

0

Recreate alle Umgebungen in ~/.virtualenvs und virtualenvwrapper installieren. Der Befehl zum Aktivieren eines env ist workon shazam. Befehlszeilenabschluss wird unterstützt.

Jetzt über Ihr Problem: Sie haben versucht, eine Umgebung, in einem Shell-Skript zu aktivieren. Das funktioniert nicht, da Shell-Skripte mit einer anderen Shell ausgeführt werden und die Aktivierung von env ihre Umgebung ändert, nicht die aktuelle. Das heißt, die Umgebung wurde kurz aktiviert, aber am Ende des Skripts wird die neue Shell beendet und die Umgebung deaktiviert.

Es gibt zwei Möglichkeiten, dies zu beheben.

  1. Verwenden Sie Aliase oder Shell-Funktionen anstelle von Skripten - sie sind die einzige Möglichkeit, die aktuelle Shell-Umgebung zu ändern.

  2. Führen Sie eine interaktive Shell am Ende Ihres Skripts (exec $SHELL) aus. Er erbt die aktivierte Umgebung und gibt Ihnen eine Eingabeaufforderung. Zu deaktivieren, einfach die Schale Ausfahrt (exit oder [Ctrl] +[D].).

+0

Mit einer Shell-Funktion gearbeitet. Vielen Dank. Das Hinzufügen von 'exec $ SHELL' hat die virtuelle Umgebung nicht aktiviert - wahrscheinlich Benutzerfehler. Ich lese virtuosenvwrapper, und während ich den Vorteil sehe, stelle ich mir nicht genügend Umgebungen vor, um die zusätzliche Komplexität zu gewährleisten. Ich werde noch einmal nachsehen, wenn sich meine Umstände ändern. – landrykid

Verwandte Themen