Pipenv: Befehl nicht gefunden

119

Ich bin neu in der Python-Entwicklung und versuche, pipenv zu verwenden. Ich habe den Befehl ausgeführt pip install pipenv, der erfolgreich ausgeführt wurde:

...
Successfully built pipenv pathlib shutilwhich pythonz-bd virtualenv-clone
Installing collected packages: virtualenv, pathlib, shutilwhich, backports.shutil-get-terminal-size, pythonz-bd, virtualenv-clone, pew, first, six, click, pip-tools, certifi, chardet, idna, urllib3, requests, pipenv
...

Wenn ich den Befehl jedoch pipenv installin einem neuen Stammprojektverzeichnis ausführe, wird folgende Meldung angezeigt : -bash: pipenv: command not found. Ich vermute, dass ich möglicherweise meine .bashrc-Datei ändern muss, bin mir jedoch nicht sicher, was ich der Datei hinzufügen soll oder ob überhaupt eine Änderung erforderlich ist.

lgants
quelle
1
Überprüfen Sie /usr/local/bin/pipenv- ist es da? Ist /usr/local/binin deinem $PATH?
Phd
3
Gleiches Problem hier: erfolgreich erstellte pipenv, aber keine Anzeichen für einen pipenv-Ordner in / usr / local / bin.
Fertig
Installieren Sie pipenvglobal?
Dethos

Antworten:

124

Dies liegt daran, dass Sie es nicht global (systemweit) installieren. Damit es in Ihrem verfügbar ist path, müssen Sie es wie folgt installieren sudo:

$ sudo pip install pipenv
Dethos
quelle
86
für den Copy-and-Pasters gibt, wird dieser Befehl in der Regel läuft , wie sudo -H pip install -U pipenv(zB auf Ubuntu), die Installation pipenvin /usr/local/bin. Die Alternative ist eine Benutzerinstallation, z. B. $ pip install pipenvdie gleiche wie $ pip install --user pipenvdie Installation in $HOME/.local/..., PATHbei der Änderungen erforderlich sind , wie in der anderen Antwort, stackoverflow.com/a/47111756/127971
michael
2
Dies bringt mich jedes Mal mit einer neuen Desktop-Umgebung.
Ligemer
@michael Du hast die beste Antwort im Kommentar. Schande! Poste es als Antwort Mann
Rahul
@ Michael das ist das einzige was bei mir funktioniert hat, vielen Dank!
Jaycarleton
@ Michael Danke für die Antwort. Bestätigt, dass es funktioniert hat.
Ultraschall
128

Das hat es für mich behoben:

sudo -H pip install -U pipenv
tuan ly
quelle
3
Hat perfekt funktioniert! Wissen Sie zufällig, was diese Befehle bedeuten (-H und -U)?
Babbz77
12
@ Babbz77 Die Option -H (HOME) für sudo fordert die Sicherheitsrichtlinie auf, die Umgebungsvariable HOME auf das Ausgangsverzeichnis des Zielbenutzers (standardmäßig root) festzulegen, wie in der Kennwortdatenbank angegeben. Die -U für Pip-Installation aktualisiert alle angegebenen Pakete auf die neueste verfügbare Version. Der Umgang mit Abhängigkeiten hängt von der verwendeten Upgrade-Strategie ab.
Andrey Vaganov
Vielen Dank, ich habe viel zu kämpfen, aber Ihre Antwort hat mich gerettet.
Vdkotian
1
Dies sollte die Antwort sein. Hat perfekt funktioniert. Ich habe eine Weile gesucht. Danke
Ivan Gonzalez
62

Wenn Sie eine Benutzerinstallation durchgeführt haben, müssen Sie Ihrer PATHVariablen den richtigen Ordner hinzufügen .

PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
PATH="$PATH:$PYTHON_BIN_PATH"

Siehe die Installationsanweisungen von pipenv

charlax
quelle
Dies war pipenv runinsofern nützlich, als ich ausgeführt werden musste , und die Installationsanweisungen sagten es mir.
Eksortso
1
Sie müssen testen python3 -m site, ob das Verzeichnis --user-base vorhanden ist!
Claudio Santos
Sollte akzeptiert werden Antwort, danke!
Maxime Lafarie
20

Ich habe es versucht:

python -m pipenv # for python2

python3 -m pipenv # for python3

Hoffe das kann dir helfen.

user9563571
quelle
1
danke, warum muss ich python -m jedes Mal einfügen, wenn ich pipenv starte?
Suisied
14

Ich habe das gleiche Problem mit pipenvMac OS X 10.13 High Seirra, ein anderer Mac funktioniert einwandfrei. Ich verwende Heroku, um meine Django-Server bereitzustellen, einige in 2.7 und einige in 3.6. Also brauche ich sowohl 2.7 als auch 3.6. Wenn HomeBrew Python installiert, bleiben die pythonPunkte auf Original 2.7 und die python3Punkte auf 3.6 erhalten.

Das Problem könnte daran liegen $ pip install pipenv. Ich habe / usr / local / bin überprüft und pipenv ist nicht da. Also habe ich eine vollständige Deinstallation versucht:

$ pip uninstall pipenv

Cannot uninstall requirement pipenv, not installed
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

$ pip3 uninstall pipenv
Skipping pipenv as it is not installed.

Dann neu installieren und funktioniert jetzt:

$ pip3 install pipenv
Collecting pipenv
John Pang
quelle
8

OSX GUYS, ÜBER HIER !!!

Wie @charlax antwortete (für mich der beste), können Sie einen dynamischeren Befehl verwenden, um PATH festzulegen. Für Mac-Benutzer konnte dies jedoch nicht funktionieren . Manchmal ist Ihr von der Site erhaltener USER_BASE-Pfad falsch, sodass Sie herausfinden müssen, wo sich Ihr Pfad befindet Python-Installation ist.

$ which python3
/usr/local/bin/python3.6

Sie erhalten einen Symlink, dann müssen Sie den Symlink der Quelle finden.

$ ls -la /usr/local/bin/python3.6
  lrwxr-xr-x  1 root  wheel  71 Mar 14 17:56 /usr/local/bin/python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

(Dies ../../../bedeutet Wurzel)

Wenn Sie also den Python-Pfad ( /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6) gefunden haben, müssen Sie nur ~ / .bashrc wie folgt eingeben:

export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.6/bin"

Claudio Santos
quelle
1
Mein Problem wurde behoben. Prost
Floran Gmehlin
Ich habe Python3 über Homebrew installiert. Beim Ausführen which python3war /Cellar/python/3.7.7/bin/python3die Ausgabe, die ich meinem PATH zugewiesen habe, aber immer noch "pipenv" nicht gefunden ". Irgendeine Idee?
Ozkan Serttas
5

Die globale Installation von pipenv kann sich nachteilig auswirken, indem die globale / systemverwaltete Pip-Installation überschrieben wird. Dies führt zu Importfehlern beim Versuch, pip auszuführen.

Sie können pipenv auf Benutzerebene installieren:

pip install --user pipenv

Dies sollte pipenv auf Benutzerebene in /home/username/.local installieren, damit es nicht zu Konflikten mit der globalen Version von pip kommt. In meinem Fall funktionierte dies nach dem Ausführen des Schalters '--user' immer noch nicht. Daher habe ich den längeren Befehl 'Fix was ich vermasselt' einmal ausgeführt, um die vom System verwaltete Umgebung wiederherzustellen:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

^ hier gefunden: Fehler nach dem Upgrade von pip: Name 'main' kann nicht importiert werden

und tat dann folgendes:

mkdir /home/username/.local ... wenn es noch nicht existiert

export PYTHONUSERBASE=/home/username/.local

Stellen Sie sicher, dass der Export wirksam wurde (hat mich während dieses Vorgangs einmal gebissen):

echo $PYTHONUSERBASE

Dann lief ich das pip install --user pipenvund alles war gut. Ich konnte dann pipenv über die CLI ausführen und das globale / systemverwaltete Pip-Modul wurde nicht überschrieben. Dies ist natürlich benutzerspezifisch. Sie möchten also sicherstellen, dass Sie pipenv auf diese Weise installieren, während Sie als Benutzer arbeiten, den Sie pipenv verwenden möchten.

Verweise:

https://pipenv.readthedocs.io/en/latest/diagnose/#no-module-named-module-name https://pipenv.readthedocs.io/en/latest/install/#pragmatic-installation-of-pipenv https://pip.pypa.io/en/stable/user_guide/#user-installs

NetRay
quelle
5

Wo Python Pakete speichert

Bevor Sie in den zu installierenden Befehl springen pipenv, sollten Sie wissen, wo pip Python-Pakete installiert werden .

In globalen Site-Paketen installiert Python Pakete, die allen Benutzern und allen Python-Anwendungen auf dem System zur Verfügung stehen. Sie können das globale Site-Paket mit dem Befehl überprüfen

python -m site

Unter Linux mit Python 3.7 lautet der Pfad normalerweise

/usr/lib/python3.7/dist-packages/setuptools

In User Site-Paketen installiert Python Pakete, die nur für Sie verfügbar sind. Die Pakete sind jedoch weiterhin für alle von Ihnen erstellten Python-Projekte sichtbar. Sie können den Weg mit bekommen

python -m site --user-base

Unter Linux mit Python 3.7 ist der Pfad normalerweise

~/.local/lib/python3.7/site-packages

Verwenden von Python 3.x.

Auf den meisten Linux- und anderen Unices werden normalerweise Python 2 und Python 3 nebeneinander installiert. Die standardmäßige ausführbare Python 3-Datei ist fast immer python3. pipAbhängig von Ihrer Linux-Distribution ist möglicherweise eine der folgenden Optionen verfügbar

pip3
python3-pip
python36-pip
python3.6-pip

Linux

Vermeiden Sie die Verwendung pipmit sudo! Ja, es ist die bequemste Möglichkeit, Python-Pakete zu installieren, und die ausführbare Datei ist verfügbar unter /usr/local/bin/pipenv, aber es bedeutet auch, dass ein bestimmtes Paket immer für alle Benutzer und alle von Ihnen erstellten Python-Projekte sichtbar ist. Verwenden Sie stattdessen Site-Pakete pro Benutzer mit--user

pip3 install --user pipenv

pipenv ist verfügbar unter

~/.local/bin/pipenv

Mac OS

Unter macOS ist Homebrew die empfohlene Methode zur Installation von Python . Sie können Python einfach aktualisieren, mehrere Versionen von Python installieren und mit Homebrew zwischen Versionen wechseln.

Wenn Sie Homebrew'ed Python verwenden, pip install --userist deaktiviert. Das globale Site-Paket befindet sich unter

/usr/local/lib/python3.y/site-packages

und Sie können Python-Pakete hier sicher installieren. Python 3.y sucht auch nach Modulen in:

 /Library/Python/3.y/site-packages
 ~/Library/Python/3.y/lib/python/site-packages

Windows

Aus alten Gründen wird Python in installiert C:\Python37. Die ausführbare Python-Datei wird normalerweise benannt py.exeund kann pipmit ausgeführt werden py -m pip.

Globale Site-Pakete werden in installiert

C:\Python37\lib\site-packages

Da Sie Ihre Windows-Geräte normalerweise nicht freigeben, ist es auch in Ordnung, ein Paket global zu installieren

py -m pip install pipenv

pipenv ist ab sofort verfügbar unter

C:\Python37\Scripts\pipenv.exe

Ich empfehle nicht, Python-Pakete in Windows mit zu installieren --user, da sich das Standardverzeichnis für Benutzer-Site-Pakete in Ihrem Windows-Roaming-Profil befindet

C:\Users\user\AppData\Roaming\Python\Python37\site-packages 

Das Roaming-Profil wird in Terminaldiensten (Remotedesktop, Citrix usw.) und beim An- und Abmelden in einer Unternehmensumgebung verwendet. Langsames Anmelden, Abmelden und Neustarten in Windows kann durch ein großes Roaming-Profil verursacht werden.

Hanxue
quelle
1

Dies ist für mich festgelegt, um:

sudo -H pip install -U pipenv
Asliddin Muzaffarov
quelle
1

Nach der Installation von pipenv ( sudo pip install pipenv) wurde beim Versuch, den pipenv shellBefehl auszuführen , immer wieder der Fehler "Befehl nicht gefunden" angezeigt .

Ich habe es endlich mit folgendem Code behoben:

pip3 install pipenv
pipenv shell
podenborg
quelle
0

Sie könnten eine Installation pipenvüber in Betracht ziehen pipsi.

curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get -pipsi.py | python3
pipsi install pew
pipsi install pipenv

Leider gibt es zum Zeitpunkt des Schreibens einige Probleme mit macOS + python3, siehe 1 , 2 . In meinem Fall musste ich die Bashprompt auf ändern#!/Users/einselbst/.local/venvs/pipsi/bin/python

einSelbst
quelle
0

In einigen Fällen der alten pipVersion:

sudo easy_install pip
sudo pip install pipenv
Prosti
quelle
0

Für Windows-Benutzer kann dies auf eine widersprüchliche Installation mit virtualenv zurückzuführen sein. Bei mir hat es funktioniert, als ich zuerst virtualenv und pipenv deinstalliert und dann nur pipenv installiert habe.

pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

Jetzt pipenv install xxxhat für mich gearbeitet

Akhila Survi
quelle
0

Unter Mac OS X Catalina scheint es dem Linux-Pfad zu folgen. Verwenden eines der folgenden Elemente:

pip install pipenv
pip3 install pipenv
sudo pip install pipenv
sudo pip3 install pipenv

Installiert im Wesentlichen pipenv hier:

/Users/mike/Library/Python/3.7/lib/python/site-packages/pipenv

Aber es ist nicht die ausführbare Datei und wird daher nie gefunden. Das einzige, was für mich funktioniert hat, war

pip install --user pipenv

Dies scheint zu einer __init__.pyDatei im obigen Verzeichnis zu führen, deren Inhalt den pipenvBefehl korrekt verfügbar macht .

und alles begann zu funktionieren, als alle anderen geposteten und kommentierten Vorschläge zu dieser Frage fehlschlugen.

Das pipenv-Paket wirkt sicherlich ziemlich wählerisch.

Michael Coxon
quelle
Für Mac-Benutzer funktioniert dieser Code auch, sudo -H python3 -m pip install pipenv
Jay Dangar