Ответ 1
Это происходит потому, что вы не устанавливаете его глобально (для всей системы). Чтобы он был доступен на вашем path
вам нужно установить его с помощью sudo
, например так:
$ sudo pip install pipenv
Я новичок в разработке 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, но я не понимаю, что добавить в файл или если требуется модификация.
Это происходит потому, что вы не устанавливаете его глобально (для всей системы). Чтобы он был доступен на вашем path
вам нужно установить его с помощью sudo
, например так:
$ sudo pip install pipenv
Это исправлено для меня:
sudo -H pip install -U pipenv
Если вы выполнили установку пользователя, вам нужно добавить нужную папку в свою переменную PATH
.
PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
PATH="$PATH:$PYTHON_BIN_PATH"
У меня та же проблема с 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
Я попробовал это:
python -m pipenv # for python2
python3 -m pipenv # for python3
Надеюсь, это поможет вам.
OSX, ребята, здесь!
Как ответил @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
(это ../../../
означает root)
Итак, вы нашли путь к Python (/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
), тогда вам просто нужно вставить в ~ ~/.bashrc следующим образом:
export PATH="$PATH: /Library/Frameworks/Python.framework/Versions/3.6/bin"
Прежде чем перейти к команде, которая установит 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
В большинстве Linux и других Unix обычно Python 2 и Python 3 устанавливаются параллельно. Исполняемый файл Python 3 по умолчанию почти всегда python3
. pip
может быть доступен в следующих случаях, в зависимости от вашего дистрибутива Linux
pip3
python3-pip
python36-pip
python3.6-pip
Избегайте использования pip
с sudo
! Да, это наиболее удобный способ установки пакетов Python, а исполняемый файл доступен на /usr/local/bin/pipenv
, но это также означает, что определенный пакет всегда виден всем пользователям и всем создаваемым вами проектам Python. Вместо этого используйте пакеты сайтов для каждого пользователя вместо --user
pip3 install --user pipenv
pipenv
доступен на
~/.local/bin/pipenv
В 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
По устаревшим причинам 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 могут быть вызваны большим перемещаемым профилем.
Глобальная установка pipenv может оказать неблагоприятное влияние, переписав глобальную /system -m anaged установку 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, и он не перезаписывал глобальный/системный -m модуль, управляемый 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
Возможно, вы захотите установить 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
Это исправлено для меня:
sudo -H pip install -U pipenv
В некоторых случаях старой версии pip
:
sudo easy_install pip
sudo pip install pipenv
Для пользователей окон это может быть связано с конфликтом установки с virtualenv. Для меня это сработало, когда я сначала удалил virtualenv и pipenv, а затем установил только pipenv.
pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv
Сейчас у меня работает pipenv install xxx
После установки pipenv (sudo pip install pipenv
) я продолжал получать ошибку "Команда не найдена" при попытке запустить команду pipenv shell
.
Я наконец исправил это с помощью следующего кода:
pip3 install pipenv
pipenv shell