VirtualEnv initialisiert von einem Bash-Skript

7

Ich versuche zu schreiben, was ein super einfaches Bash-Skript sein soll. Aktivieren Sie grundsätzlich ein virtuelles env und wechseln Sie dann in das Arbeitsverzeichnis. Eine Aufgabe, die ich sehr oft mache und zu einem Befehl führt, ergab einfach Sinn.

Grundsätzlich ...

%Vor%

Wenn es jedoch ausgeführt wird, springt es einfach zur Shell zurück und ich bin immer noch in dem Verzeichnis, aus dem ich das Skript ausgeführt habe, und die Umgebung ist nicht aktiviert.

    
Ominus 03.08.2011, 15:27
quelle

4 Antworten

20

Alles, was Sie tun müssen, ist, Ihr Skript mit dem Befehl source auszuführen. Dies liegt daran, dass der Befehl cd lokal für die Shell ist, die ihn ausführt. Wenn Sie ein Skript direkt ausführen, wird eine neue Shell ausgeführt, die endet, wenn das Skript das Ende der Datei erreicht. Mit dem Befehl source geben Sie der Shell die Anweisung, die Anweisungen des Skripts direkt auszuführen.

    
Nicola Musatti 03.08.2011, 15:34
quelle
1

Der Wert von cd ist lokal für das aktuelle Skript, das endet, wenn Sie vom Ende der Datei abfallen.

Was Sie versuchen, ist nicht "super simple", weil Sie dieses Verhalten überschreiben möchten.

Sehen Sie sich exec an, um den aktuellen Prozess durch den Prozess Ihrer Wahl zu ersetzen.

Wenn Sie Befehle in eine interaktive Bash-Datei eingeben möchten, sehen Sie sich die Option --rcfile an.

    
tripleee 04.08.2011 07:26
quelle
1

Ich stelle mir vor, Sie möchten, dass Ihr Skript dynamisch ist, aber als schnelle Lösung, wenn ich an einem neuen System arbeite, erstelle ich einen Alias.

  

beginnt d. h.

     

Das env heißt 'py1' und befindet sich in ~ / envs / py1 / mit einem Repository   Standort bei ~ / proj / py1 /

     

alias py1 = 'source ~ / envs / py1 / bin / aktivieren; cd ~ / proj / py1 /;

     

Ende d.

Sie können jetzt auf Ihr Projekt und virtualenv zugreifen, indem Sie py1 an einer beliebigen Stelle in der CLI eingeben.

Ich weiß, dass dies nicht annähernd ideal ist, verstößt gegen DRY und viele andere Programmierkonzepte. Es ist nur ein schneller und schmutziger Weg, um Ihr env und Projekt schnell zugänglich zu machen, ohne die Variablen einrichten zu müssen.

    
eusid 26.05.2012 08:06
quelle
1

Ich weiß, dass ich hier zu spät komme, aber darf ich vorschlagen, virtualenvwrapper zu verwenden? Es bietet einen schönen Bash-Hook, der scheinbar genau das macht, was Sie wollen.

Sehen Sie sich dieses Tutorial an: Ссылка

    
MusikPolice 01.09.2012 13:25
quelle

Tags und Links