Python - Усунення несправностей при встановленні PIP - PermissionError: [WinError 5] Доступ заборонено


77

Я отримую таку помилку під час використання PIP для встановлення нових пакетів або навіть оновлення самого pip до останньої версії. Я запускаю pip на машині Windows 8.1 з Python 3.4.

Повідомлення повідомляє, що у мене немає адміністративного дозволу на файли (мій обліковий запис - це обліковий запис адміністратора).

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

Повідомлення про помилку:

Installing collected packages: pip
  Found existing installation: pip 6.0.8
    Uninstalling pip-6.0.8:
      Removing file or directory c:\program files (x86)\python\python34\lib\site-packages\pip-6.0.8.dist-info\description.rst
      Cleaning up...
Exception:
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python\Python34\lib\shutil.py", line 523, in move
    os.rename(src, real_dst)
PermissionError: [WinError 5] Access is denied: 'c:\\program files (x86)\\python\\python34\\lib\\site-packages\\pip-6.0.8.dist-info\\description.rst' -> 'C:\\Users\\User\\AppData\\Local\\Temp\\pip-uze_sc4k-uninstall\\program files (x86)\\python\\python34\\lib\\site-packages\\pip-6.0.8.dist-info\\description.rst'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python\Python34\lib\site-packages\pip\basecommand.py", line 232, in main
    status = self.run(options, args)
  File "C:\Program Files (x86)\Python\Python34\lib\site-packages\pip\commands\install.py", line 347, in run
    root=options.root_path,
  File "C:\Program Files (x86)\Python\Python34\lib\site-packages\pip\req\req_set.py", line 543, in install
    requirement.uninstall(auto_confirm=True)
  File "C:\Program Files (x86)\Python\Python34\lib\site-packages\pip\req\req_install.py", line 667, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "C:\Program Files (x86)\Python\Python34\lib\site-packages\pip\req\req_uninstall.py", line 126, in remove
    renames(path, new_path)
  File "C:\Program Files (x86)\Python\Python34\lib\site-packages\pip\utils\__init__.py", line 316, in renames
    shutil.move(old, new)
  File "C:\Program Files (x86)\Python\Python34\lib\shutil.py", line 536, in move
    os.unlink(src)
PermissionError: [WinError 5] Access is denied: 'c:\\program files (x86)\\python\\python34\\lib\\site-packages\\pip-6.0.8.dist-info\\description.rst'

8
Запустіть командний рядок від імені адміністратора. Може допомогти. Наявність дозволів адміністратора в обліковому записі не завжди достатньо.
Roope

Дякую Roope. Це справді було питанням. Легко вирішити, але засмутити досвід.
Дейв Менсфілд,

3
Все ще актуальний у 2018 році: не запускайте речі як адміністратор. Набагато розумнішим рішенням є використання virtualenvдля створення каталогу віртуального середовища ("dirname virtualenv"), а потім активація цього віртуального середовища за допомогою "dirname \ Script \ Activate" перед запуском будь-яких команд pip. Таким чином, все записується в директорії, для яких у вас є повний дозвіл на запис, без необхідності UAC та без глобальних встановлень для локальних залежностей.
Майк 'Помакс' Камерманс

1
Це працює для мене, коли я запускаю cmd в режимі адміністратора.
Зейнаб,

Можливо, група Користувачів не має дозволів на запис / модифікацію для диска C: і ця помилка з’явиться, навіть якщо Ви ввійшли як адміністратор, тож Ви можете перевірити дозволи на диск C: для Групи Користувачів. .
Михайло V

Відповіді:


81

Е: Оскільки ця відповідь, здається, набула певної популярності, я додаю: робити речі в глобальному масштабі в більшості випадків - не найкраща ідея. Майже завжди правильна відповідь така: використовуйте середовище проекту, де ви не встановлюєте речі глобально, наприклад, за допомогою virtualenv.


Для тих, хто може зіткнутися з тією ж проблемою:

Запустіть командний рядок від імені адміністратора. Наявність дозволів адміністратора в обліковому записі не завжди достатньо. У Windows речі можна запускати від імені адміністратора, клацнувши правою кнопкою миші на виконуваному файлі та вибравши "Запустити від імені адміністратора". Отже, введіть "cmd" в меню "Пуск", клацніть правою кнопкою миші cmd.exe і запустіть його як адміністратор.


2
Якщо ви не маєте права адміністратора / не хочу права адміністратора: stackoverflow.com/questions/7465445 / ...
Gladclef

61
це все ще відбувалося навіть в режимі адміністратора
jef

5
Як і раніше актуальне у 2018 році: набагато розумнішим рішенням є створення virtualenv із "dirname virtualenv", а потім активація за допомогою "dirname \ Script \ Activate" перед запуском будь-яких команд pip.
Майк 'Помакс' Камерманс

2
Я зіткнувся з тим самим повідомленням про помилку "PermissionError: [WinError 5] Доступ заборонено" при спробі оновити pip за допомогою команди "python -m pip install --upgrade pip" і при спробі встановити numpy за допомогою команди "pip install numpy" . Я дотримувався вищевказаного методу, відкриваючи та запускаючи вікно cmd як Адміністратор, та запускав зазначені установки. це спрацювало.
Лука V

Для тих, хто все ще задається питанням у 2018 році, чому virtualenvрішення більш розумне, ніж робота pipадміністратора: "Здається, все добре, але ми несвідомо створили катастрофу!" dabapps.com/blog/introduction-to-pip-and-virtualenv-python
Egalth

54

Я знаю, що моя відповідь була б дивною, але це те, що я пережив зараз.

Я отримав подібну помилку при встановленні пакету tensorflow, і я спробував те ж саме, відкривши PowerShell у Windows як адміністратор, але марно.

Пізніше я з'ясував, що вже використовую numpy в одному зі сценаріїв python в активному сеансі python. Тому я закрив IDE Spyder і спробував встановити пакет tensorflow, запустивши PowerShell від імені адміністратора, і це спрацювало.

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


1
Дякую, це мені допомогло. Крім того, я виявив, що Spyder зламаний, тому що те, що я пробував раніше. Це було виправлено запустивши `` conda install tornado = 4.5.3 '', як пропонується у github.com/spyder-ide/spyder/issues/6426
Йоріс

8
У мене був запущений блокнот юпітера. Закриття вирішило проблему.
typhon04,

1
У мене теж була ця проблема, я просто закрив вже запущене вікно і спробував ще раз, це вирішило програму управління
SaddamBinSyed

1
У веб-пошуку протягом 20 хвилин це єдине, що мені вдалося! Дякую.
Ібрагім Авад,

Це спрацювало, у мене на іншому сеансі працював блокнот jupyter. Після того, як я його вбив, я зміг видалити.
noobie

23

Навіть якщо ви запускаєтеся з адміністратора, це може не вирішити проблему, якщо піп встановлено в іншому просторі користувачів. Це пов’язано з тим, що Адміністратор не володіє чужим каталогом користувацького простору, отже, він не може бачити (заходити всередину) всередину каталогу, який належить комусь. Нижче наведено точне рішення.

python -m pip install -U pip --user //In Windows 

Примітка: Ви повинні вказати опцію --user

pip install -U pip --user //Linux, and MacOS

2
Це рішення для Mac і Windows для мене. Дякую
pbou

1
працював у windows vm. зміг піп встановити пізніше. Данке!
eyeknownothing

7

Для тих, хто стикається з цією проблемою та запускає командний рядок як адміністратор, не працює це спрацювало для мене:

Оскільки я вже спробував вперше, не запустивши командну підказку як адміністратор, у моєму папці c: \ Users \ "USER" \ AppData \ Local \ Temp я виявив, що намагається запустити файли з тієї ж папки pip-u2e7e0ad-uninstall . Видалення цієї папки з папки Temp та повторна спроба встановлення вирішили проблему для мене.


2
Це не спрацювало для мене в Windows 10 з Anaconda. Видалення всіх C:\\Users\\...\\AppData\\Local\\Temp\\pip-unpack-для мене нічого не змінило.
Джосія Йодер

1
ЦЕ. особливо на приєднаних до домену машинах
mwin

6

Не використовуйте командний рядок в IDE. Запустіть командний рядок з Windows як адміністратор. Я впевнений, що це вирішить проблему. Якщо ні, видаліть pip та перевстановіть останній безпосередньо.


4
Мені вдалося це зробити з IDE (PyCharm). Я щойно перезапустив сам PyCharm в режимі адміністратора.
Адам Тот,

5

На момент оновлення з pip 7.xx до 8.xx на Python 3.4 (для підтримки * .whl).

Неправильна команда: pip install --upgrade pip (не вдається перемістити pip.exe до тимчасової папки, дозвіл відмовлено)

ОК варіант: py -3.4 -m pip install --upgrade pip(не запускати pip.exe)


Дякую. Отже, проблема в тому, що піп не можна тимчасово перемістити через те, що він виконується як програма!
One Face

5

У мене така ж проблема з анакондою на вікнах. Здається, існує проблема з антивірусом mcAfee. Якщо ви вимкнете його під час запуску оновлень або інсталяцій, це дозволить правильно запустити інсталяцію.


Мені допомогло відключення "Host IPS". Дякую!
amaslenn

5

Побачивши

You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

Я побіг

pip install -U pip

і вдарив цю помилку

PermissionError: [WinError 5]

Я спробував ще раз і отримав

pip install -U pip
ERROR: To modify pip, please run the following command:
c:\python36-32\python.exe -m pip install -U pip

Після запуску цієї точної команди вона спрацювала.

Для тих, хто пропагує використання віртуальних середовищ як рішення цієї помилки, pip та virtualenv повинні бути оновлені у вашому основному встановленні. Простіше кажучи, віртуальне середовище не пропонує рішення цієї проблеми.


Це повинно було бути таким чином, оскільки ваша папка C: \ Users \ user \ AppData \ Roaming \ Python \ Python36 \ Scripts не знаходиться в PATH середовища.
Iuri Guilherme

4

TL; DR :, python -m pip install -U pipпотім спробуйте ще раз.


Я вже використовував venv (virtualenv) в PyCharm.

Створюючи його, я inherit global site packagesвстановив прапорець, щоб дозволити пакетам, встановленим за допомогою інсталятора, працювати. Тепер всередині мого venvне було pipвстановленого, тому він буде використовувати успадкований глобальнийpip .

Ось як виникла помилка:

(venv) D:\path\to\my\project> pip install certifi  # or any other package

Не вдалося б

PermissionError: [WinError 5] Access denied: 'c:\\program files\\python36\\Lib\\site-packages\\certifi'

Зверніть увагу, як це шлях системного пітона, а не той venv. Однак ми хочемо, щоб він виконувався у правильному середовищі.

Ось ще копання:

(venv) D:\path\to\my\project> which pip
/c/Program Files/Python36/Scripts/pip

(venv) D:\path\to\my\project> which python
/d/path/to/my/project/venv/Scripts/python

Отже, python використовує правильний шлях, а pip - ні? Давайте також встановимо pip у правильному:

(venv) D:\path\to\my\project> python -m pip install -U pip
... does stuff ...
Successfully installed pip

Тепер це вже краще. Повторний запуск початкової команди з помилками працює, оскільки використовується правильний піп.

(venv) D:\path\to\my\project> pip install certifi  # or any other package
... install noise ...
Successfully installed certifi-2019.9.11 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.7

2

У мене ця проблема виникла і в Windows 10. Закриття всіх моїх сеансів Jupyter Notebook і повторне виконання pip install --upgradeкоманд, коли адміністратор змусив проблему зникнути.


2
python -m pip install -U pip --user //In Windows 

Примітка: Ви повинні вказати опцію --user

pip install -U pip --user //Linux, and MacOS

Або запустіть cmd в режимі адміністратора.


1

Залишається актуальним у 2018 році: не встановлюйте пакунки як адміністратор.

Набагато більш розумним рішенням є використання virtualenv для створення віртуального каталогу середовища ( virtualenv dirname) , а потім активувати цю віртуальне середовище з dirname\Script\Activateв Windows , перед запуском будь-яких команд пипсов. Або використовуйте pipenv для управління встановленнями для вас.

Таким чином, все записується в директорії, для яких у вас є повний дозвіл на запис, без необхідності UAC та без глобальних встановлень для локальних каталогів.


1
Ви вже втретє за цим самим питанням публікуєте ці пропозиції / коментарі. Я захоплююся вашою наполегливістю, але який сенс?
Juliusz

Можливо, що вам слід використовувати virtualenv, а інші відповіді, які я прокоментував, є досить божевільними, враховуючи моделі прав користувачів Windows. Навіть якщо це старе запитання, зі старими відповідями залиште нові коментарі, якщо відповіді більше не працюють «зараз» (хоча, правда, навіть у 2015 році відповідь справді була «використовувати virtualenv»). Насправді погані поради гірші, ніж відсутність порад, залишайте коментарі, коли бачите відповіді (або інші коментарі), які призведуть до катастрофи.
Майк 'Помакс' Камерманс

Чесно кажучи, деякі користувачі, такі як я, не потребують декількох установок python. Ми цілком задоволені запуском однієї інсталяції і можемо точно так само керувати залежностями, і ми не бачимо необхідності в додатковій команді "virtualenv" для активації, якщо єдиною метою є використання однієї інсталяції пітона. Я здивований, чому використання таких програм встановлення Windows Python за замовчуванням повинно зберігатися. Якщо запуск python у власному режимі у Windows не підтримується, офіційний установник повинен сказати це, інакше конкретне рішення проблеми - це все, що бажано.
user4779

Тоді я сподіваюся, вам ніколи не потрібно буде запускати чужий код, що призведе до конфліктів версій, як тільки ви запустите pip для глобальної інсталяції. Це спільне з "пуристами", і все, що стосується застосування здорового глузду щодо суперечливих вимог до програмного забезпечення в екосистемі, де ця проблема була вирішена приблизно настільки ненав’язливим способом (pipenv не ідеальний, але це набагато краще, ніж самостійно встановлювати кожну окрему вимогу, вручну _un_installing пакетів, які конфліктують кожного разу, коли вам потрібно запустити чужий код).
Майк 'Помакс' Камерманс

1

Зверніть увагу, що якщо ви встановлюєте це через Anaconda, вам потрібно буде відкрити Anaconda як адміністратор, а потім запустити командний рядок звідти.

В іншому випадку ви також можете запустити "Запит Anaconda" безпосередньо як адміністратор, щоб видалити та встановити пакети.


1

Привіт, не могли б ви спробувати цей рядок cmd його роботу для мене

python -m pip install --user --upgrade pip



0

Я зіткнувся з цією проблемою, коли використовував pycharm для створення та запуску віртуального середовища - я натиснув прапорець "успадковувати глобальні пакети веб-сайтів" - видалення та відтворення venv вирішило проблему для мене. Якщо ви використовували інший засіб для створення вашого venv, переконайтесь, що він НЕ СПАДКУЄ глобальних пакетів! введіть тут опис зображення


0

запустіть командний рядок від імені адміністратора та використовуйте прапор '--user', наприклад. pip install --user --upgrade pandas


-1

Просто переінсталюйте Python в іншу папку, наприклад c:\python. Після цього вас не турбуватимуть pipбажані привілеї адміністратора.

Користувач Windows 10 Pro x64.

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