Pipenv: commande introuvable

119

Je suis nouveau dans le développement Python et j'essaie d'utiliser pipenv. J'ai exécuté la commande pip install pipenv, qui s'est déroulée avec succès:

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

Cependant, quand je lance la commande pipenv installdans un nouveau répertoire racine du projet que je reçois le message suivant: -bash: pipenv: command not found. Je soupçonne que je pourrais avoir besoin de modifier mon .bashrc, mais je ne sais pas quoi ajouter au fichier ou si une modification est même nécessaire.

lgants
la source
1
Vérifiez /usr/local/bin/pipenv- est-ce là? Est-ce /usr/local/bindans votre $PATH?
doctorat
3
Même problème ici: pipenv construit avec succès mais aucun signe de dossier pipenv dans / usr / local / bin.
Terminé le
Installez-vous pipenvglobalement?
dethos le

Réponses:

127

Cela se produit parce que vous ne l'installez pas globalement (à l'échelle du système). Pour qu'il soit disponible dans votre, pathvous devez l'installer en utilisant sudo, comme ceci:

$ sudo pip install pipenv
dethos
la source
86
pour les copieurs-colleurs là-bas, cette commande est généralement exécutée comme sudo -H pip install -U pipenv(par exemple sur ubuntu), en installant pipenvdans /usr/local/bin. L'alternative est une installation utilisateur, par exemple, $ pip install pipenvqui est la même que $ pip install --user pipenv, qui installe les choses dans $HOME/.local/..., nécessitant la PATHmodification comme dans l'autre réponse, stackoverflow.com/a/47111756/127971
michael
3
Cela me donne à chaque fois un nouvel environnement de bureau.
Ligemer
@michael Vous avez la meilleure réponse en commentaire. La honte! Postez-le comme réponse homme
Rahul
@michael c'est la seule chose qui a fonctionné pour moi, merci beaucoup!
jaycarleton
@michael Merci pour la réponse. Confirmé que cela a fonctionné.
échographe
128

Cela a résolu le problème pour moi:

sudo -H pip install -U pipenv
tuan ly
la source
3
A parfaitement fonctionné! Par hasard, savez-vous ce que signifient ces commandes (-H et -U)?
Babbz77
12
@ Babbz77 L'option -H (HOME) pour sudo demande que la politique de sécurité définisse la variable d'environnement HOME sur le répertoire personnel de l'utilisateur cible (root par défaut) comme spécifié par la base de données de mots de passe. L'option -U pour pip install met à niveau tous les packages spécifiés vers la dernière version disponible. La gestion des dépendances dépend de la stratégie de mise à niveau utilisée.
Andrey Vaganov
Merci beaucoup, j'ai beaucoup de mal, mais ta réponse m'a sauvé.
vdkotian
1
Cela devrait être la réponse. A parfaitement fonctionné. J'ai cherché un moment. Merci
Ivan Gonzalez
63

Si vous avez effectué une installation utilisateur, vous devrez ajouter le bon dossier à votre PATHvariable.

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

Voir les instructions d'installation de pipenv

charlax
la source
C'était utile, car j'avais besoin de courir pipenv run, et les instructions d'installation me le disaient.
eksortso
1
Vous devez tester python3 -m sitepour voir si le répertoire --user-base existe!
Claudio Santos
Devrait être une réponse acceptée, merci!
Maxime Lafarie le
21

J'ai essayé ceci:

python -m pipenv # for python2

python3 -m pipenv # for python3

J'espère que cela peut vous aider.

utilisateur9563571
la source
1
merci, comment se fait-il que je doive inclure python -m à chaque fois que j'exécute pipenv?
suisied le
14

J'ai le même problème avec pipenvMac OS X 10.13 High Seirra, un autre Mac fonctionne très bien. J'utilise Heroku pour déployer mes serveurs Django, certains en 2.7 et d'autres en 3.6. Donc, j'ai besoin de 2.7 et 3.6. Lorsque HomeBrew installe Python, il garde les pythonpoints vers la version 2.7 d'origine et python3pointe vers la version 3.6.

Le problème pourrait être dû à $ pip install pipenv. J'ai vérifié / usr / local / bin et pipenv n'est pas là. Alors, j'ai essayé une désinstallation complète:

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

Puis réinstallez et fonctionne maintenant:

$ pip3 install pipenv
Collecting pipenv
John Pang
la source
8

OSX GUYS, PAR ICI !!!

Comme @charlax a répondu (pour moi le meilleur), vous pouvez utiliser une commande plus dynamique pour définir PATH, mais pour les utilisateurs de mac, cela ne pourrait pas fonctionner , parfois votre chemin USER_BASE obtenu à partir du site est incorrect, vous devez donc savoir où votre l'installation de python est.

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

vous obtiendrez un lien symbolique, puis vous devrez trouver le lien symbolique de la source.

$ 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

(cela ../../../signifie racine)

Donc, vous avez trouvé le chemin python ( /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6), il vous suffit de mettre dans vous ~ / .bashrc comme suit:

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

Claudio Santos
la source
1
Correction de mon problème. Cheers
Floran Gmehlin
J'ai installé python3 via Homebrew. Lors de l'exécution de which python3la sortie, /Cellar/python/3.7.7/bin/python3je l'ai affectée à mon PATH mais toujours `` pipenv` not found`. Une idée?
Ozkan Serttas
6

Où Python stocke les packages

Avant de sauter dans la commande qui va installer pipenv, il vaut la peine de comprendre où pip installe les packages Python .

Global site-packages est l'endroit où Python installe des packages qui seront disponibles pour tous les utilisateurs et toutes les applications Python sur le système. Vous pouvez vérifier le package de site global avec la commande

python -m site

Par exemple, sous Linux avec Python 3.7, le chemin est généralement

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

Les packages de site utilisateur sont l'endroit où Python installe les packages disponibles uniquement pour vous. Mais les packages seront toujours visibles pour tous les projets Python que vous créez. Vous pouvez obtenir le chemin avec

python -m site --user-base

Sous Linux avec Python 3.7, le chemin est généralement

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

Utilisation de Python 3.x

Sur la plupart des Linux et autres Unices, Python 2 et Python 3 sont généralement installés côte à côte. L'exécutable par défaut de Python 3 est presque toujours python3. pippeut être disponible comme suit, selon votre distribution Linux

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

Linux

Évitez d'utiliser pipavec sudo! Oui, c'est le moyen le plus pratique d'installer des packages Python et l'exécutable est disponible sur /usr/local/bin/pipenv, mais cela signifie également qu'un package spécifique est toujours visible pour tous les utilisateurs et tous les projets Python que vous créez. Utilisez plutôt des packages de site par utilisateur avec--user

pip3 install --user pipenv

pipenv est disponible à

~/.local/bin/pipenv

macOS

Sur macOS, Homebrew est la méthode recommandée pour installer Python . Vous pouvez facilement mettre à niveau Python, installer plusieurs versions de Python et basculer entre les versions à l'aide de Homebrew.

Si vous utilisez Python Homebrew'ed, pip install --userest désactivé. Le package global du site est situé à

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

et vous pouvez installer en toute sécurité les packages Python ici. Python 3.y recherche également des modules dans:

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

les fenêtres

Pour des raisons héritées, Python est installé dans C:\Python37. L'exécutable Python est généralement nommé py.exeet vous pouvez l'exécuter pipavec py -m pip.

Les packages de site global sont installés dans

C:\Python37\lib\site-packages

Comme vous ne partagez généralement pas vos appareils Windows, il est également possible d'installer un package globalement

py -m pip install pipenv

pipenv est maintenant disponible à

C:\Python37\Scripts\pipenv.exe

Je ne recommande pas d'installer les packages Python dans Windows avec --user, car le répertoire site-package utilisateur par défaut se trouve dans votre profil itinérant Windows

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

Le profil itinérant est utilisé dans les services Terminal Server (Remote Desktop, Citrix, etc.) et lorsque vous vous connectez / vous déconnectez dans un environnement d'entreprise. Une connexion, une déconnexion et un redémarrage lents dans Windows peuvent être causés par un profil itinérant important.

Hanxue
la source
5

L'installation globale de pipenv peut avoir un effet négatif en écrasant l'installation de pip globale / gérée par le système, entraînant ainsi des erreurs d'importation lors de la tentative d'exécution de pip.

Vous pouvez installer pipenv au niveau de l'utilisateur:

pip install --user pipenv

Cela devrait installer pipenv au niveau de l'utilisateur dans /home/username/.local afin qu'il n'entre pas en conflit avec la version globale de pip. Dans mon cas, cela ne fonctionnait toujours pas après l'exécution du commutateur `` --user '', j'ai donc exécuté une fois la commande `` réparer ce que j'ai foiré '' pour restaurer l'environnement géré par le système:

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

^ trouvé ici: Erreur après la mise à niveau de pip: impossible d'importer le nom «main»

puis a fait ce qui suit:

mkdir /home/username/.local ... s'il n'existe pas déjà

export PYTHONUSERBASE=/home/username/.local

Assurez-vous que l'exportation a pris effet (m'a mordu une fois au cours de ce processus):

echo $PYTHONUSERBASE

Ensuite, j'ai couru pip install --user pipenvet tout allait bien. Je pourrais alors exécuter pipenv à partir de la CLI et il n'a pas écrasé le module pip global / géré par le système. Bien sûr, cela est spécifique à l'utilisateur, vous voulez donc vous assurer d'installer pipenv de cette façon tout en travaillant en tant qu'utilisateur que vous souhaitez utiliser pipenv.

Références:

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
la source
1

Ceci est résolu pour moi de:

sudo -H pip install -U pipenv
Asliddin Muzaffarov
la source
1

Après avoir installé pipenv ( sudo pip install pipenv), j'ai continué à recevoir l'erreur "Commande introuvable" en essayant d'exécuter la pipenv shellcommande.

Je l'ai finalement corrigé avec le code suivant:

pip3 install pipenv
pipenv shell
Podenborg
la source
0

Vous pourriez envisager d'installer pipenvvia pipsi.

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

Malheureusement, il y a quelques problèmes avec macOS + python3 au moment de la rédaction, voir 1 , 2 . Dans mon cas, j'ai dû changer le bashprompt en#!/Users/einselbst/.local/venvs/pipsi/bin/python

einSelbst
la source
0

Dans certains cas d'ancienne pipversion:

sudo easy_install pip
sudo pip install pipenv
prosti
la source
0

Pour les utilisateurs de Windows, cela peut être dû à une installation conflictuelle avec virtualenv. Pour moi, cela a fonctionné lorsque j'ai d'abord désinstallé virtualenv et pipenv, puis installé uniquement pipenv.

pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

Maintenant pipenv install xxxtravaillé pour moi

akhila survi
la source
0

Sur Mac OS X Catalina, il semble suivre le chemin Linux. En utilisant l'un des:

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

Installe essentiellement pipenv ici:

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

Mais ce n'est pas l'exécutable et n'est donc jamais trouvé. La seule chose qui a fonctionné pour moi était

pip install --user pipenv

Cela semble résulter en un __init__.pyfichier dans le répertoire ci-dessus qui a le contenu pour exposer correctement la pipenvcommande.

et tout a commencé à fonctionner, lorsque toutes les autres suggestions publiées et commentées sur cette question ont échoué.

Le paquet pipenv semble certainement assez pointilleux.

Michael Coxon
la source
pour les utilisateurs de Mac, ce code fonctionne également, sudo -H python3 -m pip install pipenv
Jay Dangar