Pipenv: nie znaleziono polecenia

119

Jestem nowy w programowaniu w Pythonie i próbuję używać pipenv. Uruchomiłem polecenie pip install pipenv, które zakończyło się pomyślnie:

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

Jednak po uruchomieniu komendy pipenv installw katalogu projektu świeżego korzenia otrzymuję następujący komunikat: -bash: pipenv: command not found. Podejrzewam, że może być konieczne zmodyfikowanie mojego .bashrc, ale nie jestem pewien, co dodać do pliku, ani czy modyfikacja jest w ogóle konieczna.

lgants
źródło
1
Sprawdź /usr/local/bin/pipenv- czy tam jest? Jest /usr/local/binw twoim $PATH?
Phd
3
Ten sam problem: pomyślnie zbudowano pipenv, ale nie ma śladu folderu pipenv w / usr / local / bin.
zakończono
Czy instalujesz pipenvglobalnie?
dethos

Odpowiedzi:

127

Dzieje się tak, ponieważ nie instalujesz go globalnie (w całym systemie). Aby był dostępny w twoim path, musisz go zainstalować za pomocą sudo:

$ sudo pip install pipenv
dethos
źródło
86
dla kopiujących i pasterów to polecenie jest zwykle uruchamiane jako sudo -H pip install -U pipenv(np. na ubuntu), instalując pipenvw /usr/local/bin. Alternatywą jest np. Instalacja użytkownika $ pip install pipenv, która jest taka sama jak $ pip install --user pipenv, która instaluje rzeczy $HOME/.local/..., wymagając PATHmodyfikacji, jak w drugiej odpowiedzi, stackoverflow.com/a/47111756/127971
michael
3
To dostaje mnie za każdym razem z nowym środowiskiem graficznym.
Ligemer
@michael Masz najlepszą odpowiedź w komentarzu. Wstyd! Wyślij go jako odpowiedź człowieka
Rahul
@michael to jedyna rzecz, która działała dla mnie, wielkie dzięki!
jaycarleton
@michael Dzięki za odpowiedź. Potwierdziłem, że zadziałało.
USG
128

To naprawiło to dla mnie:

sudo -H pip install -U pipenv
tuan ly
źródło
3
Działało idealnie! Czy przypadkiem wiesz, co oznaczają te polecenia (-H i -U)?
Babbz77
12
@ Babbz77 Opcja -H (HOME) dla sudo wymaga, aby strategia bezpieczeństwa ustawiła zmienną środowiskową HOME na katalog domowy użytkownika docelowego (domyślnie root) zgodnie z bazą danych haseł. Opcja -U dla pip install aktualizuje wszystkie określone pakiety do najnowszej dostępnej wersji. Obsługa zależności zależy od stosowanej strategii aktualizacji.
Andrey Vaganov
Dziękuję bardzo, trochę się zmagam, ale Twoja odpowiedź mnie uratowała.
vdkotian
1
To powinna być odpowiedź. Działał doskonale. Szukałem chwilę. Dzięki
Ivan Gonzalez
63

Jeśli wykonałeś instalację użytkownika, musisz dodać odpowiedni folder do swojej PATHzmiennej.

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

Zobacz instrukcje instalacji pipenv

charlax
źródło
Było to przydatne, ponieważ musiałem uruchomić pipenv run, a instrukcja instalacji mi to powiedziała.
eksortso
1
Musisz przetestować, python3 -m siteczy istnieje katalog --user-base!
Claudio Santos
Powinna zostać zaakceptowana odpowiedź, dziękuję!
Maxime Lafarie
21

Próbowałem tego:

python -m pipenv # for python2

python3 -m pipenv # for python3

Mam nadzieję, że to może ci pomóc.

user9563571
źródło
1
dzięki, dlaczego muszę dołączać python -m za każdym razem, gdy uruchamiam pipenv?
suisied
14

Mam ten sam problem z pipenvsystemem Mac OS X 10.13 High Seirra, inny Mac działa dobrze. Używam Heroku do wdrażania moich serwerów Django, niektóre w 2.7, a niektóre w 3.6. Potrzebuję więc zarówno 2,7, jak i 3,6. Kiedy HomeBrew instaluje Pythona, zachowuje pythonpunkty do oryginalnej wersji 2.7 i python3wskazuje na 3.6.

Problem może wynikać z $ pip install pipenv. Sprawdziłem / usr / local / bin i pipenv nie ma. Więc spróbowałem pełnego odinstalowania:

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

Następnie zainstaluj ponownie i działa teraz:

$ pip3 install pipenv
Collecting pipenv
John Pang
źródło
8

OSX GUYS, OVER TUTAJ !!!

Jak odpowiedział @charlax (dla mnie najlepsza), możesz użyć bardziej dynamicznego polecenia, aby ustawić PATH, ale dla użytkowników mac to nie mogło działać , czasami twoja ścieżka USER_BASE pobrana ze strony jest nieprawidłowa, więc musisz dowiedzieć się, gdzie instalacja Pythona to.

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

otrzymasz łącze symboliczne, a następnie musisz znaleźć łącze symboliczne źródła.

$ 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

(to ../../../oznacza root)

Znalazłeś więc ścieżkę Pythona ( /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6), a następnie wystarczy umieścić w niej ~ / .bashrc w następujący sposób:

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

Claudio Santos
źródło
1
Naprawiłem mój problem. Pozdrawiam
Floran Gmehlin
Zainstalowałem python3 przez Homebrew. Kiedy uruchomiłem which python3wyjście /Cellar/python/3.7.7/bin/python3, przypisałem je do mojej PATH, ale nadal nie znaleziono `` pipenv ''. Dowolny pomysł?
Ozkan Serttas
6

Gdzie Python przechowuje pakiety

Przed przejściem do polecenia, które zainstaluje pipenv, warto zrozumieć, gdzie pip instaluje pakiety Pythona .

Globalne pakiety witryn to miejsce, w którym Python instaluje pakiety, które będą dostępne dla wszystkich użytkowników i wszystkich aplikacji Pythona w systemie. Możesz sprawdzić globalny pakiet witryny za pomocą polecenia

python -m site

Na przykład w systemie Linux z Pythonem 3.7 zwykle ścieżka to

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

Pakiety witryny użytkownika to miejsce, w którym Python instaluje pakiety dostępne tylko dla Ciebie. Jednak pakiety będą nadal widoczne dla wszystkich tworzonych projektów Pythona. Możesz dostać ścieżkę za pomocą

python -m site --user-base

W systemie Linux z Pythonem 3.7 zwykle jest to ścieżka

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

Korzystanie z Pythona 3.x

W większości systemów Linux i innych Uniksów Python 2 i Python 3 są zwykle instalowane obok siebie. Domyślny plik wykonywalny Pythona 3 jest prawie zawsze python3. pipmoże być dostępny jako jeden z poniższych, w zależności od twojej dystrybucji Linuksa

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

Linux

Unikaj używania pipz sudo! Tak, jest to najwygodniejszy sposób instalowania pakietów Pythona, a plik wykonywalny jest dostępny pod adresem /usr/local/bin/pipenv, ale oznacza to również, że określony pakiet jest zawsze widoczny dla wszystkich użytkowników i wszystkich tworzonych projektów Pythona. Zamiast tego użyj pakietów lokacji dla każdego użytkownika zamiast--user

pip3 install --user pipenv

pipenv jest dostępny pod adresem

~/.local/bin/pipenv

System operacyjny Mac

W systemie macOS Homebrew jest zalecanym sposobem instalacji Pythona . Możesz łatwo zaktualizować Pythona, zainstalować wiele wersji Pythona i przełączać się między wersjami za pomocą Homebrew.

Jeśli używasz Homebrew'ed Python, pip install --userjest wyłączony. Globalny pakiet witryn znajduje się pod adresem

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

i możesz tutaj bezpiecznie zainstalować pakiety Pythona. Python 3.y wyszukuje również moduły w:

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

Windows

Ze starszych powodów Python jest instalowany w C:\Python37. Plik wykonywalny Pythona ma zwykle nazwę py.exei można go uruchomić pipz py -m pip.

Globalne pakiety lokacji są instalowane w programie

C:\Python37\lib\site-packages

Ponieważ zwykle nie udostępniasz swoich urządzeń z systemem Windows, możesz również zainstalować pakiet globalnie

py -m pip install pipenv

pipenv jest teraz dostępny pod adresem

C:\Python37\Scripts\pipenv.exe

Nie polecam instalowania pakietów Pythona w systemie Windows z --user, ponieważ domyślny katalog witryny-pakietu użytkownika znajduje się w profilu mobilnym systemu Windows

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

Profil mobilny jest używany w usługach terminalowych (Remote Desktop, Citrix itp.) Oraz podczas logowania / wylogowywania się w środowisku korporacyjnym. Powolne logowanie, wylogowywanie i ponowne uruchamianie w systemie Windows może być spowodowane dużym profilem mobilnym.

Hanxue
źródło
5

Instalowanie pipenv globalnie może mieć niekorzystny wpływ, nadpisując instalację pip globalną / zarządzaną przez system, co powoduje błędy importu podczas próby uruchomienia pip.

Możesz zainstalować pipenv na poziomie użytkownika:

pip install --user pipenv

Powinno to zainstalować pipenv na poziomie użytkownika w /home/username/.local, aby nie kolidował z globalną wersją pip. W moim przypadku to nadal nie działało po uruchomieniu przełącznika `` --user '', więc raz uruchomiłem dłuższe polecenie `` napraw to, co schrzaniłem '', aby przywrócić środowisko zarządzane przez system:

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

^ znaleziono tutaj: Błąd po aktualizacji pip: nie można zaimportować nazwy „main”

a następnie wykonał następujące czynności:

mkdir /home/username/.local ... jeśli jeszcze nie istnieje

export PYTHONUSERBASE=/home/username/.local

Upewnij się, że eksport zadziałał (ugryzł mnie raz podczas tego procesu):

echo $PYTHONUSERBASE

Następnie uruchomiłem pip install --user pipenvi wszystko było dobrze. Mogłem wtedy uruchomić pipenv z CLI i nie nadpisał globalnego / zarządzanego przez system modułu pip. Oczywiście jest to specyficzne dla użytkownika, więc chcesz się upewnić, że instalujesz pipenv w ten sposób, pracując jako użytkownik, którego chcesz używać pipenv.

Bibliografia:

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
źródło
1

Naprawiono to, żebym:

sudo -H pip install -U pipenv
Asliddin Muzaffarov
źródło
1

Po zainstalowaniu pipenv ( sudo pip install pipenv) ciągle otrzymywałem błąd „Nie znaleziono polecenia” podczas próby uruchomienia pipenv shellpolecenia.

W końcu naprawiłem to za pomocą następującego kodu:

pip3 install pipenv
pipenv shell
podenborg
źródło
0

Możesz rozważyć instalację pipenvprzez pipsi.

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

Niestety w chwili pisania tego artykułu występują pewne problemy z macOS + python3, patrz 1 , 2 . W moim przypadku musiałem zmienić bashprompt na#!/Users/einselbst/.local/venvs/pipsi/bin/python

einSelbst
źródło
0

W niektórych przypadkach starej pipwersji:

sudo easy_install pip
sudo pip install pipenv
prosti
źródło
0

W przypadku użytkowników okien może to być spowodowane konfliktem instalacji z virtualenv. U mnie zadziałało, gdy najpierw odinstalowałem virtualenv i pipenv, a następnie zainstalowałem tylko pipenv.

pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

Teraz pipenv install xxxpracował dla mnie

akhila survivali
źródło
0

W systemie Mac OS X Catalina wydaje się podążać ścieżką Linuksa. Korzystanie z dowolnego z:

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

Zasadniczo instaluje tutaj pipenv:

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

Ale nie jest to plik wykonywalny, więc nigdy go nie znaleziono. Jedyną rzeczą, która działała dla mnie, była

pip install --user pipenv

Wydaje się, że w wyniku tego __init__.pyplik w powyższym katalogu ma zawartość umożliwiającą prawidłowe udostępnienie pipenvpolecenia.

i wszystko zaczęło działać, gdy wszystkie inne opublikowane i skomentowane sugestie dotyczące tego pytania zawiodły.

Pakiet pipenv z pewnością wydaje się dość wybredny.

Michael Coxon
źródło
dla użytkowników komputerów Mac ten kod również działa, sudo -H python3 -m pip install pipenv
Jay Dangar