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.