Aktivieren Sie virtualenv mit Alias

1041
landrykid

Ich kann meine virtuelle Python-Umgebung durch Eingabe von deren Ordner aktivieren . bin/activate. Ich möchte stattdessen einen einzelnen Wortalias eingeben, z. B. shazamaus dem Home-Ordner (oder einem anderen Ort), der die Umgebung aktiviert, in meinen Master-Projektordner wechselt und meine Projekte auflistet.

Ich habe versucht, einen Alias ​​in .bashrc zu erstellen, der auf eine .sh-Datei verweist, die Folgendes enthält:

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

Ich erhielt eine Erlaubnis, deren Fehler abgelehnt wurde, also lief ich chmod u+x <script file>. Das Skript wird jetzt ausgeführt, aber der VE wird nicht aktiviert. Wenn die Projektordner aufgelistet sind, befindet sich die Shell nicht im Hauptprojektordner. Ich würde mich über eine Anleitung freuen. Vielen Dank.

HINWEIS: Ich habe in einem anderen Forum eine ANTWORT erhalten . Shell-Skripts ändern nicht die Umgebung, aus der sie aufgerufen werden. Verwenden Sie stattdessen eine Shell-Funktion in .bashrc.

shazam () { source ~/path-to-virtual-environment/bin/activate cd ~/path-to-master-project-folder ls -a } 
1

2 Antworten auf die Frage

0
Tomasz Jakub Rup

Alias ​​kann eine Liste von Befehlen enthalten:

alias shazm='source ~/path-to-virtual-environment/bin/activate; cd ~/path-to-master-project-folder; ls -a' 
0
Stew

Dies ist eine Kernfunktion des virtualenvwrapper-Pakets, zusammen mit einer robusten, ergänzenden Ausstattung.

So erstellen Sie eine Virtualenv mit dem Namen shazamVirtualenvwrapper:

mkvirtualenv shazam 

Um es zu aktivieren:

workon shazam 

Zum Deaktivieren wie bei einer aktiven Virtualisierung:

deactivate 

Mit dem Virtualenvwrapper sind viele Anwendungsfälle und Benutzerkonfigurationen möglich. Zum Beispiel bevorzuge ich es, alle meine Virtualenvs in einem einzigen Verzeichnis zu speichern ~/.envs. Dies wird als Konfiguration unterstützt. Es ist ein Open Source- und aktiv gewartetes Projekt. Ich kann es nicht stark genug empfehlen.