Пипенв: Команда не знайдена


119

Я новачок у розробці Python та намагаюся використовувати pipenv. Я запустив команду pip install pipenv, яка успішно працює:

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

Тим НЕ менше, коли я запускаю команду pipenv installв свіжої кореневої директорії проекту я отримую наступне повідомлення: -bash: pipenv: command not found. Я підозрюю, що мені може знадобитися змінити свій .bashrc, але мені незрозуміло, що додати до файлу або якщо модифікація навіть необхідна.


1
Перевірте /usr/local/bin/pipenv- це там? Є чи /usr/local/binу вашій $PATH?
пт

3
Ту ж проблему тут: успішно побудований pipenv, але жодної ознаки папки pipenv в / usr / local / bin.
aDone

Ви встановлюєте pipenvглобально?
детос

Відповіді:


126

Це трапляється тому, що ви не встановлюєте це в усьому світі (система в цілому). Щоб він був доступний у вашому, pathйого потрібно встановити за допомогою sudoтакого:

$ sudo pip install pipenv

86
для копіювальних і вставних файлів ця команда зазвичай виконується як sudo -H pip install -U pipenv(наприклад, на ubuntu), встановлюючи pipenvв /usr/local/bin. Альтернативою є встановлення користувача, наприклад, $ pip install pipenvякий є тим самим $ pip install --user pipenv, що встановлює речі $HOME/.local/..., вимагаючи PATHзмінити, як в іншій відповіді, stackoverflow.com/a/47111756/127971
michael

2
Це щоразу отримує мене з новим середовищем робочого столу.
Лігемер

@michael У коментарі ви маєте найкращу відповідь. Сором! Опублікувати його як людину відповіді
Рахул

@michael це єдине, що працювало на мене, велике спасибі!
jaycarleton

@michael Дякую за відповідь. Підтвердили, що це спрацювало.
ультразвук

128

Це зафіксувало це для мене:

sudo -H pip install -U pipenv

3
Працювали чудово! Випадково ви знаєте, що означають ці команди (-H та -U)?
Babbz77

12
@ Babbz77 Параметр -H (HOME) для sudo вимагає, щоб політика безпеки встановила змінну середовища HOME у домашній каталог цільового користувача (root за замовчуванням), як зазначено в базі даних паролів. -U for pip install оновить усі зазначені пакети до найновішої доступної версії. Поводження з залежностями залежить від використовуваної стратегії оновлення.
Андрій Ваганов

Дякую тобі, я багато чого з усіх сил, але твоя відповідь мене врятувала.
вдкотян

1
Це має бути відповіддю. Працювали чудово. Я деякий час шукав. Спасибі
Іван Гонсалес

63

Якщо ви виконали інсталяцію користувача, вам потрібно буде додати потрібну папку до PATHзмінної.

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

Див. Інструкції з установки pipenv


Це було корисно тим, що мені потрібно було запустити pipenv run, і інструкція з монтажу мені так сказала.
екзорцо

1
Ви повинні перевірити, python3 -m siteчи існує - dir-основа dir!
Клаудіо Сантос

Слід прийняти відповідь, дякую!
Максим Лафарі

21

Я спробував це:

python -m pipenv # for python2

python3 -m pipenv # for python3

Сподіваюся, що це може вам допомогти.


1
дякую, як мені потрібно включати python -m кожного разу, коли я запускаю pipenv?
suisied

14

У мене pipenvтака ж проблема з Mac OS X 10.13 High Seirra, інший Mac працює чудово. Я використовую Heroku для розгортання своїх серверів Django, деяких з 2.7 та деяких з 3.6. Отже, мені потрібно як 2,7, так і 3,6. Коли HomeBrew встановлює Python, він зберігає вказівки pythonдо оригінальних 2.7 таpython3 вказує на 3.6.

Проблема може виникнути через $ pip install pipenv. Я перевірив / usr / local / bin та pipenv там немає. Отже, я спробував повне видалення:

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

Потім перевстановіть і працює зараз:

$ pip3 install pipenv
Collecting pipenv

8

ОСОБИ, ХОТИ, ТУТ !!!

Як @charlax відповів (для мене найкращий), ви можете використовувати більш динамічну команду, щоб встановити PATH, але для користувачів Mac це не могло працювати , іноді ваш USER_BASE шлях, отриманий від сайту, невірний, тому вам потрібно дізнатися, де ваш встановлення пітона є.

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

ви отримаєте симпосилання, тоді вам потрібно знайти джерело символьного посилання.

$ 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

(це ../../../означає корінь)

Отже, ви знайшли шлях python ( /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6), тоді вам просто потрібно ввести ~ / .bashrc таким чином:

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


1
Виправлено мою проблему. Ура
Флоран Гмелін

Я встановив python3 через Homebrew. Коли запустили which python3вихід, /Cellar/python/3.7.7/bin/python3я призначив його своєму PATH, але все ще `` pipenv` не знайдено``. Будь-яка ідея?
Озкан Серттас

6

Там, де зберігаються пакети Python

Перш ніж перейти до команди, яка буде встановлена pipenv, варто зрозуміти, де pip встановлюються пакети Python .

Глобальний сайт-пакети - це те, коли Python встановлює пакети, які будуть доступні для всіх користувачів та всіх програм Python в системі. Ви можете перевірити глобальний пакет сайту за допомогою команди

python -m site

Наприклад, в Linux з Python 3.7 шлях зазвичай є

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

Сайт-пакети користувачів - це те, коли Python встановлює пакети, доступні лише для вас. Але пакунки все одно будуть видні для всіх створених вами проектів Python. Сюди можна дістатись

python -m site --user-base

На Linux з Python 3.7 шлях зазвичай є

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

Використання Python 3.x

У більшості Linux та інших Unice зазвичай Python 2 і Python 3 встановлюються поруч. Виконаний Python 3 за замовчуванням майже завжди python3. pipможе бути доступний як будь-який із наведених нижче, залежно від вашого дистрибутива Linux

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

Linux

Уникайте використання pipз sudo! Так, це найзручніший спосіб встановлення пакетів Python, і виконуваний файл доступний на /usr/local/bin/pipenv, але це також означає, що певний пакет завжди видно для всіх користувачів та всіх створених вами проектів Python. Натомість використовуйте пакунки сайту для користувачів, а не--user

pip3 install --user pipenv

pipenv доступний за адресою

~/.local/bin/pipenv

macOS

На macOS Homebrew є рекомендованим способом встановлення Python . Ви можете легко оновити Python, встановити кілька версій Python та переключитися між версіями за допомогою Homebrew.

Якщо ви використовуєте Homebrew'ed Python, pip install --userвимкнено. Глобальний сайт-пакет знаходиться за адресою

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

і тут можна сміливо встановлювати пакети Python. Python 3.y також шукає модулі в:

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

Windows

З застарілих причин Python встановлений в C:\Python37. Виконаний файл Python, як правило, називається py.exe, і ви можете працювати pipз нимpy -m pip .

Пакети глобальних сайтів встановлені в

C:\Python37\lib\site-packages

Оскільки ви зазвичай не ділитесь своїми пристроями Windows, також нормально встановлювати пакет у всьому світі

py -m pip install pipenv

pipenv тепер доступний за адресою

C:\Python37\Scripts\pipenv.exe

Я не рекомендую встановлювати пакети Python у Windows із --user, оскільки каталог веб-сайтів користувачів за замовчуванням знаходиться у вашому роумінговому профілі Windows

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

Профіль роумінгу використовується в службах терміналів (віддалений робочий стіл, Citrix тощо) і при вході / вимкненні в корпоративному середовищі. Повільний вхід, вихід у систему та перезавантаження в Windows можуть бути спричинені великим роумінговим профілем.


5

Установка pipenv в усьому світі може мати несприятливий ефект, перезаписавши глобальну / керовану системою інсталяцію pip, тим самим приводячи до помилок імпорту при спробі запуску pip.

Ви можете встановити pipenv на рівні користувача:

pip install --user pipenv

Це повинно встановити pipenv на рівні користувача в /home/username/.local, щоб воно не суперечило глобальній версії pip. У моєму випадку, це все ще не спрацювало після запуску перемикача '--user', тому я запускав довшу команду 'виправити те, що я накрутив', щоб відновити кероване середовищем управління системою:

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

^ знайдено тут: Помилка після оновлення pip: не можна імпортувати ім’я 'main'

а потім зробив наступне:

mkdir /home/username/.local ... якщо його вже не існує

export PYTHONUSERBASE=/home/username/.local

Переконайтесь, що експорт набув чинності (покусав мене один раз під час цього процесу):

echo $PYTHONUSERBASE

Потім я побіг pip install --user pipenv і все було добре. Тоді я міг запустити pipenv з CLI, і він не перезаписав глобальний / керований системою pip модуль. Звичайно, це специфічно для користувача, тому ви хочете переконатися, що ви встановили pipenv таким чином, працюючи як той користувач, який хочете використовувати pipenv.

Список літератури:

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

Після установки pipenv ( sudo pip install pipenv) я продовжував отримувати помилку "Команда не знайдена" при спробі запуску pipenv shellкоманди.

Я остаточно виправив це за допомогою наступного коду:

pip3 install pipenv
pipenv shell

0

Ви можете розглянути можливість встановлення pipenvчерез pipsi.

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

На жаль, є певні проблеми з macOS + python3 під час написання, див. 1 , 2 . У моєму випадку я повинен був змінити bashprompt на#!/Users/einselbst/.local/venvs/pipsi/bin/python


0

У деяких випадках старої pipверсії:

sudo easy_install pip
sudo pip install pipenv

0

Для користувачів вікон це може бути пов’язано з конфліктною установкою з virtualenv. Для мене це спрацювало, коли я спочатку видалив virtualenv і pipenv, а потім встановив тільки pipenv.

pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

Зараз pipenv install xxxпрацював на мене


0

У Mac OS X Catalina, схоже, слідує шляху Linux. Використання будь-якого з:

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

По суті, тут встановлюється pipenv:

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

Але його не виконується, тому його так і не знайти. Єдине, що працювало для мене, - це

pip install --user pipenv

Це, мабуть, призводить до того, що __init__.pyфайл у вказаній вище директорії містить вміст, щоб правильно викрити pipenvкоманду.

і все почало працювати, коли всі інші розміщені та коментовані пропозиції з цього питання не змогли.

Пакет pipenv, безумовно, здається досить вибагливим.


для користувачів Mac цей код також працює, sudo -H python3 -m pip install pipenv
Jay Dangar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.