Pipenv: comando non trovato


119

Sono nuovo nello sviluppo di Python e sto tentando di utilizzare pipenv. Ho eseguito il comando pip install pipenv, che è stato eseguito correttamente:

...
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
...

Tuttavia, quando si esegue il comando pipenv installin una cartella del progetto radice fresca ricevo il messaggio che segue: -bash: pipenv: command not found. Sospetto che potrei aver bisogno di modificare il mio .bashrc, ma non sono chiaro su cosa aggiungere al file o se la modifica è addirittura necessaria.


1
Controlla /usr/local/bin/pipenv- c'è? È /usr/local/binnel tuo $PATH?
phd

3
Lo stesso problema qui: pipenv creato con successo ma nessun segno della cartella pipenv in / usr / local / bin.
Fatto il

Stai installando a pipenvlivello globale?
dethos

Risposte:


127

Ciò accade perché non lo stai installando a livello globale (a livello di sistema). Affinché sia ​​disponibile nel tuo pathè necessario installarlo utilizzando sudo, in questo modo:

$ sudo pip install pipenv

86
per i copy-and-pasters là fuori, questo comando viene solitamente eseguito come sudo -H pip install -U pipenv(ad esempio su ubuntu), installando pipenvin /usr/local/bin. L'alternativa è un'installazione da parte dell'utente, ad esempio, $ pip install pipenvche è la stessa di $ pip install --user pipenv, che installa le cose in $HOME/.local/..., richiedendo PATHche venga modificato come nell'altra risposta, stackoverflow.com/a/47111756/127971
michael

3
Questo mi porta ogni volta con un nuovo ambiente desktop.
Ligemer

@michael Hai la migliore risposta nel commento. Vergogna! Postalo come risposta uomo
Rahul

@michael questa è l'unica cosa che ha funzionato per me, grazie mille!
jaycarleton

@michael Grazie per la risposta. Ha confermato che ha funzionato.
ecografo

128

Questo lo ha risolto per me:

sudo -H pip install -U pipenv

3
Ha funzionato perfettamente! Per caso sai cosa significano questi comandi (-H e -U)?
Babbz77

12
@ Babbz77 L'opzione -H (HOME) per sudo richiede che la politica di sicurezza imposti la variabile d'ambiente HOME sulla directory home dell'utente di destinazione (root per impostazione predefinita) come specificato dal database delle password. -U per l'installazione di pip aggiorna tutti i pacchetti specificati alla versione più recente disponibile. La gestione delle dipendenze dipende dalla strategia di aggiornamento utilizzata.
Andrey Vaganov

Grazie mille, ho lottato molto, ma la tua risposta mi ha salvato.
vdkotian

1
Questa dovrebbe essere la risposta. Ha funzionato perfettamente. Ho cercato un po '. Grazie
Ivan Gonzalez

63

Se hai eseguito un'installazione utente, dovrai aggiungere la cartella giusta alla tua PATHvariabile.

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

Vedere le istruzioni di installazione di pipenv


Questo è stato utile, in quanto avevo bisogno di eseguire pipenv rune le istruzioni di installazione me lo dicevano.
eksortso

1
Devi testare python3 -m siteper vedere se esiste la directory --user-base!
Claudio Santos

Dovrebbe essere accettata la risposta, grazie!
Maxime Lafarie

21

Ho provato questo:

python -m pipenv # for python2

python3 -m pipenv # for python3

Spero che questo possa aiutarti.


1
grazie, come mai devo includere python -m ogni volta che eseguo pipenv?
suisied l'

14

Ho lo stesso problema con pipenvMac OS X 10.13 High Seirra, un altro Mac funziona perfettamente. Uso Heroku per distribuire i miei server Django, alcuni in 2.7 e alcuni in 3.6. Quindi, ho bisogno sia di 2.7 che di 3.6. Quando HomeBrew installa Python, mantiene i pythonpunti all'originale 2.7 e python3punta a 3.6.

Il problema potrebbe essere dovuto a $ pip install pipenv. Ho controllato / usr / local / bin e pipenv non è presente. Quindi, ho provato una disinstallazione completa:

$ 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.

Quindi reinstallalo e funziona ora:

$ pip3 install pipenv
Collecting pipenv

8

OSX RAGAZZI, QUI !!!

Come ha risposto @charlax (per me il migliore), puoi usare un comando più dinamico per impostare PATH, ma per gli utenti mac questo non potrebbe funzionare , a volte il tuo percorso USER_BASE ricevuto dal sito è sbagliato, quindi devi scoprire dove il tuo l'installazione di python è.

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

otterrai un collegamento simbolico, quindi devi trovare il collegamento simbolico della fonte.

$ 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

(questo ../../../significa root)

Quindi hai trovato il percorso python ( /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6), quindi devi solo metterti ~ / .bashrc come segue:

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


1
Risolto il mio problema. Cheers
Floran Gmehlin

Ho installato python3 tramite Homebrew. Quando è stato eseguito which python3l'output era quello /Cellar/python/3.7.7/bin/python3che l'ho assegnato al mio PERCORSO ma ancora `` pipenv` non trovato`. Qualche idea?
Ozkan Serttas

6

Dove Python archivia i pacchetti

Prima di saltare al comando che installerà pipenv, vale la pena capire dove pip installa i pacchetti Python .

Global site-packages è dove Python installa i pacchetti che saranno disponibili per tutti gli utenti e tutte le applicazioni Python sul sistema. Puoi controllare il pacchetto del sito globale con il comando

python -m site

Ad esempio, su Linux con Python 3.7 il percorso è solitamente

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

User site-packages è dove Python installa i pacchetti disponibili solo per te. Ma i pacchetti saranno comunque visibili a tutti i progetti Python che crei. Puoi ottenere il percorso con

python -m site --user-base

Su Linux con Python 3.7 il percorso è solitamente

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

Utilizzando Python 3.x

Sulla maggior parte di Linux e altri Unix, di solito Python 2 e Python 3 sono installati fianco a fianco. L'eseguibile predefinito di Python 3 è quasi sempre python3. pippotrebbe essere disponibile come uno dei seguenti, a seconda della distribuzione Linux

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

Linux

Evita di usare pipcon sudo! Sì, è il modo più conveniente per installare i pacchetti Python e l'eseguibile è disponibile su /usr/local/bin/pipenv, ma significa anche che quel pacchetto specifico è sempre visibile per tutti gli utenti e per tutti i progetti Python che crei. Utilizza invece i pacchetti del sito per utente con--user

pip3 install --user pipenv

pipenv è disponibile all'indirizzo

~/.local/bin/pipenv

Mac OS

Su macOS, Homebrew è il modo consigliato per installare Python . Puoi facilmente aggiornare Python, installare più versioni di Python e passare da una versione all'altra usando Homebrew.

Se stai usando Homebrew'ed Python, pip install --userè disabilitato. Il pacchetto globale del sito si trova in

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

e puoi installare in sicurezza i pacchetti Python qui. Python 3.y cerca anche i moduli in:

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

finestre

Per motivi legacy, Python è installato in C:\Python37. L'eseguibile Python è solitamente denominato py.exee puoi eseguire pipconpy -m pip .

I pacchetti del sito globale sono installati in

C:\Python37\lib\site-packages

Poiché di solito non condividi i tuoi dispositivi Windows, va bene anche installare un pacchetto a livello globale

py -m pip install pipenv

pipenv è ora disponibile su

C:\Python37\Scripts\pipenv.exe

Non consiglio di installare i pacchetti Python in Windows con --user, perché la directory del pacchetto del sito utente predefinita si trova nel tuo profilo di roaming di Windows

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

Il profilo di roaming viene utilizzato in Servizi terminal (Desktop remoto, Citrix, ecc.) E quando ci si connette / si disconnette in un ambiente aziendale. Accesso, disconnessione e riavvio lenti in Windows possono essere causati da un ampio profilo di roaming.


5

L'installazione di pipenv a livello globale può avere un effetto negativo sovrascrivendo l'installazione di pip globale / gestita dal sistema, con conseguenti errori di importazione quando si tenta di eseguire pip.

Puoi installare pipenv a livello utente:

pip install --user pipenv

Questo dovrebbe installare pipenv a livello utente in /home/username/.local in modo che non sia in conflitto con la versione globale di pip. Nel mio caso, non funzionava ancora dopo aver eseguito l'opzione "--user", quindi ho eseguito una volta il comando più lungo "correggi quello che ho sbagliato" per ripristinare l'ambiente gestito dal sistema:

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

^ trovato qui: errore dopo l'aggiornamento di pip: impossibile importare il nome 'main'

e poi ha fatto quanto segue:

mkdir /home/username/.local ... se non esiste già

export PYTHONUSERBASE=/home/username/.local

Assicurati che l'esportazione abbia avuto effetto (mordimi una volta durante questo processo):

echo $PYTHONUSERBASE

Quindi, ho eseguito il file pip install --user pipenv e tutto è andato bene. Potrei quindi eseguire pipenv dalla CLI e non ha sovrascritto il modulo pip globale / gestito dal sistema. Naturalmente, questo è specifico per l'utente, quindi devi assicurarti di installare pipenv in questo modo mentre lavori come utente che desideri utilizzare pipenv.

Riferimenti:

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



1

Dopo aver installato pipenv ( sudo pip install pipenv), continuavo a ricevere l'errore "Comando non trovato" durante il tentativo di eseguire il filepipenv shell comando.

Alla fine l'ho risolto con il seguente codice:

pip3 install pipenv
pipenv shell

0

Potresti considerare l'installazione pipenvtramite pipsi.

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

Sfortunatamente ci sono alcuni problemi con macOS + python3 al momento della scrittura, vedere 1 , 2 . Nel mio caso ho dovuto cambiare il bashprompt in#!/Users/einselbst/.local/venvs/pipsi/bin/python


0

In alcuni casi della vecchia pipversione:

sudo easy_install pip
sudo pip install pipenv

0

Per gli utenti Windows ciò potrebbe essere dovuto a un'installazione in conflitto con virtualenv. Per me ha funzionato quando ho disinstallato prima virtualenv e pipenv, quindi ho installato solo pipenv.

pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

Ora ha pipenv install xxxfunzionato per me


0

Su Mac OS X Catalina sembra seguire il percorso Linux. Utilizzando uno qualsiasi di:

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

Installa essenzialmente pipenv qui:

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

Ma non è l'eseguibile e quindi non viene mai trovato. L'unica cosa che ha funzionato per me è stata

pip install --user pipenv

Ciò sembra risultare in un __init__.pyfile nella directory precedente con contenuti per esporre correttamente il pipenvcomando.

e tutto ha iniziato a funzionare, quando tutti gli altri suggerimenti pubblicati e commentati su questa domanda hanno fallito.

Il pacchetto pipenv sembra certamente piuttosto esigente.


per gli utenti Mac funziona anche questo codice, sudo -H python3 -m pip install pipenv
Jay Dangar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.