bash: mkvirtualenv: Befehl nicht gefunden

100

Nachdem ich den Anweisungen auf Doug Hellmans virtualenvwrapperPost gefolgt war , konnte ich immer noch keine Testumgebung starten.

[mpenning@tsunami ~]$ mkvirtualenv test
-bash: mkvirtualenv: command not found
[mpenning@tsunami ~]$

Es sollte beachtet werden, dass ich das benutze WORKON_HOME, das nicht in meinem ist $HOME. Ich habe versucht, /usr/local/bin/virtualenvwrapper.shwie in den virtualenvwrapperInstallationsdokumenten gezeigt zu suchen , aber es existiert nicht.

Ich verwende CentOS 6 und Python 2.6.6, wenn dies wichtig ist.


# File: ~/.bash_profile
# ...

export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"
Mike Pennington
quelle

Antworten:

107

Lösung 1 :

Aus irgendeinem Grund virtualenvwrapper.shinstalliert in /usr/bin/virtualenvwrapper.sh, anstatt unter /usr/local/bin.

Folgendes in meinen .bash_profileArbeiten ...

source "/usr/bin/virtualenvwrapper.sh"
export WORKON_HOME="/opt/virtual_env/"

Meine Installation scheint ohne Sourcing gut zu funktionieren virtualenvwrapper_bashrc

Lösung 2 :

Alternativ können Sie, wie unten erwähnt, die Chance nutzen, die virtualenvwrapper.shsich bereits in Ihrer Shell befindet, PATHund einfach eine ausgebensource `which virtualenvwrapper.sh`

Mike Pennington
quelle
4
Wenn Sie WORKON_HOME"~ / .virtualenvs" ( Standardwert ) einstellen, können Sie private virtuelle
Umgebungen
1
Wenn Sie mit dem Paketmanager Ihrer Distribution installieren, werden Dateien /usr/binanstelle von gespeichert /usr/local/bin. Im Allgemeinen sollten Sie nicht davon ausgehen, dass der eine oder andere gefunden wird. Das ist einer der Gründe, warum wir eine PATHVariable haben.
Tripleee
Diese Antwort basierte auf der Installation von virtualenvwrapper mit pip, was ich am liebsten mache.
Mike Pennington
Es muss zuerst installiert werden,pip install virtualenvwrapper
Eddie
55

Versuchen:

source `which virtualenvwrapper.sh`

Die Backticks sind Befehlssubstitutionen - sie nehmen alles, was das Programm druckt, und fügen es in den Ausdruck ein. In diesem Fall überprüft "which" den $ PATH, um virtualenvwrapper.sh zu finden, und gibt den Pfad dazu aus. Das Skript wird dann von der Shell über 'source' gelesen.

Wenn dies bei jedem Neustart der Shell geschehen soll, ist es wahrscheinlich besser, zuerst die Ausgabe des Befehls "which" abzurufen und dann die Zeile "source" in Ihre Shell einzufügen.

echo "source /path/to/virtualenvwrapper.sh" >> ~/.profile

^ Dies kann je nach Shell geringfügig abweichen. Achten Sie auch darauf, kein einzelnes> zu verwenden, da dies Ihr ~ / .profile abschneidet: -o

Erich
quelle
4
Während dies ein wertvoller Hinweis zur Lösung des Problems sein kann, benötigt eine Antwort wirklich etwas mehr Details. Bitte bearbeiten Sie, um zu erklären, wie das Problem dadurch gelöst wird. Alternativ können Sie dies stattdessen als Kommentar schreiben.
Toby Speight
1
Dies löste mein Problem. Aber wird jemand erklären, warum und wie?
h0r53
1
Die Backticks sind Befehlssubstitutionen - sie nehmen alles, was das Programm druckt, und fügen es in den Ausdruck ein. In diesem Fall überprüft "which" den $ PATH, um virtualenvwrapper.sh zu finden, und gibt den Pfad dazu aus. Das Skript wird dann von der Shell über 'source' gelesen.
Erich
43

Ich hatte das gleiche Problem unter OS X 10.9.1 mit Python 2.7.5. WORKON_HOMEFür mich keine Probleme , aber ich musste nach dem Ausführen manuell source "/usr/local/bin/virtualenvwrapper.sh"zu ~/.bash_profile(oder ~/.bashrcunter Unix) hinzufügenpip install virtualenvwrapper

Nick Benes
quelle
1
Wo haben Sie die Quelle "/usr/local/bin/virtualenvwrapper.sh" manuell hinzugefügt?
Gregology
1
@ Gregology Ich habe diese Zeile hinzugefügt ~/.bash_profile. Beachten Sie, dass Sie beim ersten Hinzufügen entweder das Terminal (das ausgeführt wird .bash_profile) neu laden oder diesen sourceBefehl direkt über die Befehlszeile ausführen müssen .
Nick Benes
1
Es wäre sehr hilfreich, wenn Sie einen Titel mit dem Dateinamen hätten und den gesamten Inhalt anzeigen würden, damit Sie keine weiteren Fragen zu "Wo haben Sie ihn abgelegt?"
JGallardo
1
Ob Sie die Plattform verwenden .bash_profileoder .bashrcnicht, hängt direkt davon ab, welche Plattform Sie verwenden, obwohl auf einigen Plattformen die eine oder andere möglicherweise fehlt. Die Unterschiede finden Sie auf der Bash-Handbuchseite. Im Allgemeinen sollten Sie dies nur in Ihrem Unternehmen wirklich benötigen .bash_profile, aber einige Distributionen verwenden Setups, die die Sache komplizieren.
Tripleee
25

Voraussetzungen, um diesen Befehl auszuführen -

  1. pip (rekursives Akronym für P ip I nstalls P ackages) ist ein Paketverwaltungssystem, mit dem in Python geschriebene Softwarepakete installiert und verwaltet werden. Viele Pakete finden Sie im Python Package Index (PyPI).

    sudo apt-get installiere python-pip

  2. Installieren Sie die virtuelle Umgebung. Wird zum Erstellen einer virtuellen Umgebung, zum Installieren von Paketen und Abhängigkeiten mehrerer voneinander isolierter Projekte verwendet.

    sudo pip installiere virtualenv

  3. Installieren des Wrappers für virtuelle Umgebungen Informationen zum Wrapper für virtuelle Umgebungen

    sudo pip installiere virtualenvwrapper

Nach der Installation der Voraussetzungen müssen Sie den Wrapper für die virtuelle Umgebung in Aktion setzen, um eine virtuelle Umgebung zu erstellen. Es folgen die Schritte -

  1. Legen Sie das Verzeichnis der virtuellen Umgebung in der Pfadvariablen fest. export WORKON_HOME=(directory you need to save envs)

  2. source /usr/local/bin/virtualenvwrapper.sh -p $WORKON_HOME

Wie von @Mike erwähnt, Quelle `which virtualenvwrapper.sh` oder which virtualenvwrapper.shkann zum Auffinden der Datei virtualenvwrapper.sh verwendet werden.

Es ist am besten, zwei Zeilen in ~ / .bashrc einzufügen, um zu vermeiden, dass die obigen Befehle jedes Mal ausgeführt werden, wenn Sie eine neue Shell öffnen. Das ist alles, was Sie brauchen, um eine Umgebung mit mkvirtualenv zu erstellen

Zu beachtende Punkte -

  • Unter Ubuntu müssen Sie möglicherweise virtualenv und virtualenvwrapper als root installieren. Stellen Sie dem obigen Befehl einfach sudo voran.
  • Abhängig von dem zur Installation von virtualenv verwendeten Prozess kann der Pfad zu virtualenvwrapper.sh variieren. Suchen Sie den entsprechenden Pfad, indem Sie $ find / usr -name virtualenvwrapper.sh ausführen. Passen Sie die Zeile in Ihrem .bash_profile- oder .bashrc-Skript entsprechend an.
Keshav
quelle
1
Notiz hinzufügen. Unter Ubuntu 18.04 musste ich nach der Installation neu starten und dann funktionierte es.
Dan Grahn
@screenmutt Danke für wertvolle Beiträge. Ich könnte es verpasst haben, als ich Ubuntu 16.04 benutze. Ich möchte jedoch wissen, nach welchem ​​Schritt Sie neu starten mussten? Ist nach der Installation von Pip-Paketen oder nach dem Einrichten von "Virtual Environment Directory"?
Keshav
Nach der Installation des Wrappers. Danach hat es funktioniert.
Dan Grahn
1
@ DanGrahn Sie müssen nicht neu starten, müssen nur neu ausführen .bashrc- entweder explizit source ~/.bashrcin Ihrem aktuellen Terminal oder ein neues Terminalfenster öffnen
TJ Ellis
8

Verwenden Sie dieses Verfahren, um eine virtuelle Umgebung in Ubuntu zu erstellen

Schritt 1

Installieren Sie pip

   sudo apt-get install python-pip

Schritt 2

Installieren Sie virtualenv

   sudo pip install virtualenv

Schritt 3

Erstellen Sie ein Verzeichnis zum Speichern Ihrer virtuellen Envs (ich verwende ~ / .virtualenvs)

   mkdir ~/.virtualenvs

Oder verwenden Sie diesen Befehl, um eine bestimmte Version von Python in env zu installieren

virtualenv -p /usr/bin/python3.6 venv

Schritt 4

   sudo pip install virtualenvwrapper

Schritt 5

   sudo nano ~/.bashrc

Schritt 6

Fügen Sie diesen zweizeiligen Code am Ende der bashrc-Datei hinzu

  export WORKON_HOME=~/.virtualenvs
  source /usr/local/bin/virtualenvwrapper.sh

Schritt 7

Neues Terminal öffnen (empfohlen)

Schritt 8

Erstellen Sie eine neue virtuelle Umgebung

  mkvirtualenv myawesomeproject

Schritt 9

Verwenden Sie den Befehl workon, um virtuelle Umgebungen zu laden oder zwischen ihnen zu wechseln:

  workon myawesomeproject

Schritt 10

Verwenden Sie zum Beenden Ihrer neuen virtuellen Umgebung

 deactivate

und stellen Sie sicher, dass Sie pip vs pip3 verwenden

ODER führen Sie die folgenden Schritte aus, um die virtuelle Umgebung mit python3 zu installieren

Installieren Sie env

python3 -m venv my-project-env

und aktivieren Sie Ihre virtuelle Umgebung mit dem folgenden Befehl:

source my-project-env/bin/activate
giveJob
quelle
6

Da ich gerade einen Zug gemacht habe, werde ich versuchen, die Antwort zu schreiben, die ich mir vor zwei Stunden gewünscht hätte. Dies ist für Leute, die nicht nur die Copy & Paste-Lösung wollen

Erstens: Fragen Sie sich, warum das Kopieren und Einfügen von Pfaden bei einigen Personen funktioniert, bei anderen nicht? ** Der Hauptgrund, warum sich die Lösungen unterscheiden, sind unterschiedliche Python-Versionen, 2.x oder 3.x. Es gibt tatsächlich verschiedene Versionen von virtualenv und virtualenvwrapper, die entweder mit Python 2 oder 3 funktionieren. Wenn Sie mit Python 2 arbeiten, installieren Sie wie folgt:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Wenn Sie Python 3 verwenden möchten, installieren Sie die zugehörigen Python 3-Versionen

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Sie haben die Pakete für Ihre Python-Version erfolgreich installiert und sind fertig, oder? Probieren Sie es aus. Geben Sie workonin Ihr Terminal ein. Ihr Terminal kann den Befehl nicht finden ( workonist ein Befehl von virtualenvwrapper). Natürlich wird es nicht. Workonist eine ausführbare Datei, die Ihnen erst zur Verfügung steht, wenn Sie die Datei laden / beschaffen virtualenvwrapper.sh. Aber die offizielle Installationsanleitung hat Sie in dieser behandelt, oder?. Öffnen Sie einfach Ihr .bash_profile und fügen Sie Folgendes ein, heißt es in der Dokumentation:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

Insbesondere der Befehl source /usr/local/bin/virtualenvwrapper.shscheint hilfreich zu sein, da der Befehl die gewünschte Datei zu laden / zu quellen scheint virtualenvwrapper.sh, die alle Befehle enthält, mit denen Sie wie workonund arbeiten möchten mkvirtualenv. Aber ja, nein. Wenn Sie der offiziellen Installationsanleitung folgen, erhalten Sie sehr wahrscheinlich den Fehler vom ersten Beitrag : mkvirtualenv: command not found. Es wird immer noch kein Befehl gefunden und Sie sind immer noch frustriert. Was ist das Problem hier? Das Problem ist, dass virtualenvwrapper.sh nicht dort ist, wo Sie gerade danach suchen. Kurze Erinnerung ... Sie suchen hier:

source /usr/local/bin/virtualenvwrapper.sh

Es gibt jedoch einen ziemlich einfachen Weg, um die gewünschte Datei zu finden. Schreib einfach

which virtualenvwrapper

zu Ihrem Terminal. Dadurch wird Ihr PFAD nach der Datei durchsucht , da sie sich sehr wahrscheinlich in einem Ordner befindet, der im PFAD Ihres Systems enthalten ist.

Wenn Ihr System sehr exotisch ist, wird die gewünschte Datei außerhalb eines PATH-Ordners ausgeblendet. In diesem Fall können Sie den Pfad virtalenvwrapper.shmit dem Shell-Befehl findenfind / -name virtualenvwrapper.sh

Ihr Ergebnis könnte ungefähr so ​​aussehen: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Herzlichen Glückwunsch. You have found your missing file!. Jetzt müssen Sie nur noch einen Befehl in Ihrem .bash_profile ändern. Nur ändern:

source "/usr/local/bin/virtualenvwrapper.sh"

zu:

"/Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh"

Herzliche Glückwünsche. Virtualenvwrapper funktioniert jetzt auf Ihrem System. Sie können jedoch noch etwas tun, um Ihre Lösung zu verbessern. Wenn Sie die Datei virtualenvwrapper.shmit dem Befehl gefunden haben which virtualenvwrapper.sh, wissen Sie, dass sie sich in einem Ordner des PATH befindet. Wenn Sie also nur den Dateinamen schreiben, geht Ihr Dateisystem davon aus, dass sich die Datei in einem PATH-Ordner befindet. Sie müssen also nicht den vollständigen Pfad aufschreiben. Schreib einfach:

source "virtualenvwrapper.sh"

Das ist es. Sie sind nicht mehr frustriert. Sie haben Ihr Problem gelöst. Hoffnungsvoll.

Xen_mar
quelle
Ich habe gerade Ihre Lösung kopiert und durchgearbeitet
Johnny 5.
1

Unter Windows 7 und Git Bash hilft mir das:

  1. Erstellen Sie eine ~ / .bashrc Datei (unter Ihrem Benutzer-Home-Ordner).
  2. In Zeile export WORKON_HOME = $ HOME / .virtualenvs (Sie müssen diese Ordner erstellen , wenn es nicht vorhanden ist)
  3. Fügen Sie die Zeilenquelle "C: \ Programme (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh" hinzu (ändern Sie den Pfad für Ihre virtualenvwrapper.sh).

Starten Sie Ihren git bash neu und der Befehl mkvirtualenv funktioniert jetzt einwandfrei.

Eugene Zalivadnyi
quelle
1

Unter Verwendung von Git Bash unter Windows 10 und Python36 für Windows fand ich die Datei virtualenvwrapper.sh an einer etwas anderen Stelle, und durch Ausführen dieses Problems wurde das Problem behoben

source virtualenvwrapper.sh 
/c/users/[myUserName]/AppData/Local/Programs/Python36/Scripts
am wenigsten grebe
quelle
1

Um das virtualenvwrapperunter Ubuntu 18.04.3 erfolgreich zu installieren, müssen Sie Folgendes tun:

  1. Installieren virtualenv

    sudo apt install virtualenv
  2. Installieren virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Fügen Sie am Ende der .bashrcDatei Folgendes hinzu

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Führen Sie die .bashrcDatei aus

    source ~/.bashrc
  5. Erstellen Sie Ihre virtuelle Umgebung

    mkvirtualenv your_virtualenv
tsveti_iko
quelle
0

Ich habe mein Problem in Ubuntu 14.04 mit Python 2.7.6 gelöst, indem ich zwei Zeilen in ~ / .bash_profile (oder ~ / .bashrc in Unix) -Dateien eingefügt habe.

Quelle "/usr/local/bin/virtualenvwrapper.sh"

export WORKON_HOME = "/ opt / virtual_env /"

Und dann beide Leitungen auf dem Terminal ausführen.

Mants
quelle
0

Unter Windows 10 ersetze ich zum Erstellen der virtuellen Umgebung " pip mkvirtualenv myproject" durch " mkvirtualenv myproject", und das funktioniert gut.

Ayoub_DATA
quelle