Pipenv: команда не найдена


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.
Совершено

Вы устанавливаете pipenvглобально?
dethos

Ответы:


128

Это происходит потому, что вы не устанавливаете его глобально (в масштабе всей системы). Чтобы он был доступен у вас, pathвам необходимо установить его sudo, например:

$ sudo pip install pipenv

87
для тех, кто копирует и вставляет, эта команда обычно запускается как 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

3
Это дает мне каждый раз новую среду рабочего стола.
Ligemer

@michael У вас лучший ответ в комментарии. Позор! Опубликовать как ответ человек
Рахул

@michael, это единственное, что у меня сработало, большое спасибо!
Джейкарлтон,

@michael Спасибо за ответ. Подтверждено, что это работает.
ультразвуковой

130

Это исправило это для меня:

sudo -H pip install -U pipenv

3
Сработало отлично! Вы случайно знаете, что означают эти команды (-H и -U)?
Babbz77

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

Большое вам спасибо, я много боролся, но ваш ответ спас меня.
vdkotian 06

1
Это должен быть ответ. Работает отлично. Я искал какое-то время. Спасибо
Иван Гонсалес

62

Если вы выполнили установку пользователем, вам нужно добавить нужную папку в вашу PATHпеременную.

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

См. Инструкции по установке pipenv


Это было полезно, поскольку мне нужно было запустить pipenv run, и инструкции по установке говорили мне об этом.
eksortso

1
Вы должны проверить, существует python3 -m siteли каталог --user-base!
Клаудио Сантос

Должен быть принят ответ, спасибо!
Максим Лафари,

21

Я пробовал это:

python -m pipenv # for python2

python3 -m pipenv # for python3

Надеюсь, это поможет тебе.


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

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

РЕБЯТА OSX, ЗДЕСЬ !!!

Как ответил @charlax (для меня лучший), вы можете использовать более динамическую команду для установки PATH, но для пользователей Mac это не может работать , иногда ваш путь USER_BASE, полученный с сайта, неверен, поэтому вам нужно узнать, где ваш установка python есть.

$ 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
Исправлена ​​моя проблема. Cheers
Флоран Гмелин

Я установил 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 и других Unix 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
Джей Дангар
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.