Как установить пакет pip глобально, а не локально?

99

Я пытаюсь установить пакет flake8 с помощью pip3, и мне кажется, что он отказывается устанавливать, потому что он уже установлен в одном локальном месте.

Как я могу заставить его установить глобально (системный уровень)?

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

Обратите внимание, что я бы предпочел универсальное решение (которое должно работать в Debian, OS X, возможно, даже Windows), которое должно использоваться на любой платформе, поэтому я не хочу указывать место назначения сам.

По какой-то странной причине он ведет себя так, как я уже указал, --userчего в моем случае я не делал.

Единственный способ установить пакет глобально - сначала удалить его, а затем снова установить. Почему-то кажется, что pip (8.1.1) отказывается устанавливать пакет глобально, если он существует локально.

Отказ от ответственности: во время экспериментов виртуальные среды не использовались и не пострадали.

Сорин
источник
3
Вы пробовали от пользователя root или sudo?
matino
Вы пробовали pip install flake8 --upgrade?
Мауро Баральди
В случае аналогичных проблем, связанных с использованием виртуальных сред (venv), используйте --system-site-packagesопцию для наследования глобально установленных пакетов в ваш venv. См. Stackoverflow.com/a/61326709/4445175
Влад

Ответы:

138

Почему бы тебе не попробовать sudoс Hфлагом? Это должно помочь.

sudo -H pip install flake8

Обычный sudo pip install flake8будет пытаться использовать ваш собственный домашний каталог. Дает -Hуказание использовать домашний каталог системы. Больше информации на https://stackoverflow.com/a/43623102/

nikhilweee
источник
98
Hкак в Глобал?
Мэтт
63
-Hкак в « Эй, судо», перестань использовать мой домашний каталог. используйте Hвместо этого свой собственный каталог
ome
6
На самом деле это не устанавливает его глобально, но вместо этого, кажется, просто сохраняет его в домашнем каталоге пользователя root
parsecpython
@nikhilweee Я не понимаю, чем это отличается от pip3 install ipythonдеактивации virtualenv, похоже, они устанавливаются в тот же site-packagesкаталог.
iamfrancisyo
@parsecpython для меня это трюк и установка пакетов в /usr/local/lib/python3.8/dist-packages, где я имел в виду
yota
8

Может быть --force-reinstall, сработает, иначе --ignore-installedдолжно сработать .

Мануэль
источник
5

Вы пользуетесь virtualenv? Если да, отключите файл virtualenv. Если вы не используете, он уже широко установлен (системный уровень). Попробуйте обновить пакет.

pip install flake8 --upgrade
Мауро Баральди
источник
2
Не совсем так.
GMaster
2

На самом деле я не вижу вашей проблемы. Глобально - это любой пакет, который находится в папке пакетов сайта вашего пути python3.

Если вы хотите использовать его только локально, вам необходимо настроить virtualenv и переустановить пакеты с активированной виртуальной средой.

LIT
источник
При создании venv вы можете --system-site-packages .venv/devнаследовать глобальные пакеты, поэтому вам не нужно переустанавливать их в каждом venv. Это имеет смысл для пакетов, которые можно использовать в любом проекте, например, black, flake8, pytest. Пример:python -m venv --system-site-packages .venv/dev
Wlad
-1

Где в python происходит установка pip?

Я дам решение для Windows, с которым я столкнулся, и на его решение ушло время.

Прежде всего, в Windows (здесь я буду использовать Windows в качестве ОС), если вы это сделаете pip install <package_name>, она будет по умолчанию установлена ​​глобально ( если вы не активировали виртуальную среду ). Как только вы активируете виртуальную среду и окажетесь внутри нее, все установки pip будут внутри этой виртуальной среды.


pip устанавливает указанные пакеты, но я не могу их использовать ?

Поскольку этот пип может выдавать вам предупреждение о том, что исполняемые файлы пипса, такие как pip3.exe, pip.exeне находятся в вашей переменной пути. Для этого вы можете добавить этот путь (обычно - C:\Users\<your_username>\AppData\Roaming\Programs\Python\) к вашим переменным окружения . После этого перезапустите ваш cmd, а теперь попробуйте использовать установленный пакет python. Теперь он должен работать.

невнятный
источник