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.