Wie man virtualenv dazu bringt, mit Fischschalen zu arbeiten

78

Ich versuche, virtualenv dazu zu bringen, mit der Fischschale zu arbeiten. Ich habe virtualenv installiert und es funktioniert gut mit bash und zsh. Wenn Sie jedoch den folgenden Befehl ausführen, wird Folgendes zurückgegeben fish: Unknown command 'source':

$ source ~/path/to/bin/activate

Weiß jemand, wie man virtualenv und die Fischschale zusammenbringt? Danke im Voraus.

drbunsen
quelle
2
Ich habe angefangen, github.com/adambrenecki/virtualfish zu verwenden. Das funktioniert sehr gut für meine Projekte.

Antworten:

181

Sie müssen nicht aktivieren, um virtualenv zu verwenden. Dies ist praktisch. Sie können die virtuelle Umgebung einfach direkt verwenden:

virtualenv venv
./venv/bin/pip install foo

Haben Sie versucht, von Fischen mit:

. venv/bin/activate.fish

Es ist wahrscheinlich nicht so weit verbreitet wie Bash und kann daher Probleme haben. Ein Blick auf den Commit-Verlauf zeigt eine aktuelle Korrektur:

https://github.com/pypa/virtualenv/blob/master/virtualenv_embedded/activate.fish

Aiden Bell
quelle
1
Vielen Dank. Ich hatte es versucht active.fish, musste aber virtualenv auf die neueste Version aktualisieren, damit es funktioniert.
Drbunsen
Wenn Sie auf bestimmte Fehler
2
Funktioniert perfekt für mich
Lee
@ Lee Ich bekomme dieses Problem. paste.ubuntu.com/25955380 Was bedeutet "." hier beziehen sich auf?
Abhishek Bhatia
Oh ja, ich werde jedes Mal, wenn ich etwas benutze, den vollständigen Pfad eingeben. Klingt gut.
Alper vor
21

Sie können dies auch verwenden: https://github.com/adambrenecki/virtualfish

Sie können eine virtuelle Umgebung aktivieren, indem Sie Folgendes eingeben:

vf activate <my_env>
devict
quelle
11

Für virtualenv verfügt fish über eine separate Aktivierungsdatei im Verzeichnis bin mit der .fishErweiterung.

Sie müssen also Folgendes tun:

$ source ~/path/to/bin/activate.fish

Sangeet
quelle
2

Wenn Sie nicht verwenden können activate.fish, können Sie das binVerzeichnis einfach zu Ihrem hinzufügen PATH:

set -gx PATH /path/to/virtualenv/bin $PATH

Das ist so ziemlich alles activate.fish(naja, nicht ganz, es wird auch PYTHONHOMEnicht gesetzt (was vorher nicht festgelegt wurde, als ich es trotzdem ausprobiert habe, YMMV); und es versucht, sich mit deinem zu messen fish_prompt).

Alternativ: Ich bin ein ehemaliger Bash-Benutzer, der mit der Verwendung von Fish begonnen hat und Doug Hellman vermisst . Dahervirtualenvwrapper habe ich erst heute begonnen, an einem Ersatz namens virtualfish zu arbeiten. Er enthält einige nützliche Verknüpfungen, die Sie möglicherweise nützlich finden, obwohl sie bei weitem nicht so vollständig sind wie VEW.

Leigh Brenecki
quelle
2

(Dieser Thread scheint fast geschlossen zu sein, aber ich habe eine Lösung gefunden :)

So betreten Sie eine neue Fischschale mit venv Umwelt:

begin; set -lx PATH (realpath ./venv)/bin $PATH; fish; end

wenn das venv-verzeichnis ist ./venv.

Zum Deaktivieren einfach Strg-D oder exit.


Eine andere Lösung, die keine untergeordnete Shell aufruft.

Machen Sie eine venv Umgebung und geben Sie sie ein:

python3 -m venv ./venv
set -lx PATH (realpath ./venv)/bin $PATH

Verlassen Sie die Umgebung:

set -lx PATH $PATH[2..-1]
Toshihiro Kamiya
quelle
Vielen Dank ! Es ist eigentlich die einfachste Lösung für mich.
Damien