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


100

Я намагаюся встановити пакет 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
Wlad

Відповіді:


140

Чому б вам не спробувати sudoз Hпрапором? Це повинно зробити трюк.

sudo -H pip install flake8

Звичайний sudo pip install flake8спробує використовувати власний домашній каталог. -HІнструктує його використовувати домашній каталог системи. Більше інформації на https://stackoverflow.com/a/43623102/


98
Hяк у Хлобала?
Метт

63
-Hяк у hey sudo, перестань користуватися моїм домашнім каталогом. використовувати свій власний Hкаталог Омі замість stackoverflow.com/a/43623102
nikhilweee

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 та перевстановити пакети з активованим віртуальним середовищем.


Створюючи venv, ви можете використовувати його --system-site-packages .venv/devдля успадкування глобальних пакетів, тому вам не доведеться перевстановлювати їх у кожному venv. Це має сенс для пакетів, які можна використовувати в будь-якому проекті, наприклад, чорний, flake8, pytest. Приклад:python -m venv --system-site-packages .venv/dev
Wlad

-1

Де відбувається встановлення pip в python?

Я дам рішення для Windows, з яким я стикався, і вирішив деякий час.

Перш за все, у вікнах (я буду тут брати Windows як ОС), якщо ви це зробите pip install <package_name>, він за замовчуванням буде встановлений глобально ( якщо ви не активували віртуальне середовище ). Як тільки ви активуєте віртуальне середовище, і ви опинитесь у ньому, усі піп-установки будуть знаходитися всередині цього віртуального середовища.


pip встановлює згадані пакети, але чи не можу я їх використовувати ?

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.