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.


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

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

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


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.


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

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"


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.


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



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

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


0

W niektórych przypadkach starej pipwersji:

sudo easy_install pip
sudo pip install pipenv

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


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.


dla użytkowników komputerów Mac ten kod również działa, sudo -H python3 -m pip install pipenv
— Jay Dangar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.