«Отказано в доступе» при попытке запустить Python в Windows 10

Похоже, что обновление Windows 10 в одночасье сломало Python. Просто попытка запустить python --version вернула ошибку «Отказано в доступе». Ни одно из трех обновлений; KB4507453, KB4506991 или KB4509096 выглядят так, как будто они были виновниками, но время возникновения проблемы подозрительно. Вместо того, чтобы возиться с откатом, я надеюсь, что есть более простое исправление, которое мне не хватает.

Разрешения на python «-rwxr-xr-x», и я ничего не менял, кроме как позволить обновлению Windows перезагрузить машину после установки вчерашних патчей.

Согласно информации о системе, я использую 10.0.18362.

Следует также отметить, что это происходит независимо от того, пытаюсь ли я (пытаюсь) выполнить Python из git-bash, используя «запуск от имени администратора» или нет, и если я пытаюсь использовать PowerShell, он просто открывает магазин Windows, как будто приложение не установлено, поэтому Я думаю, что по какой-то причине он не может видеть содержимое моей папки /c/Users/david/AppData/Local/Microsoft/WindowsApps/.

Я также пытался переустановить Python 3.7.4, но это тоже не помогло. Есть ли что-то еще, на что я должен смотреть?

Вероятно, стоит проверить веб-сайт Microsoft. Я где-то читал, извините, не помню где, что у других людей были проблемы с этим обновлением - кажется, пустой экран. В любом случае, ожидание, пока они исправят это через день или два, может оказаться ответом.

Ant 10.07.2019 18:39

Кстати, «разрешения на python — '-rwxr-xr-x'», вероятно, бессмысленны в Windows. Это что-то фальшивое, о котором сообщает Unix-подобная среда, такая как MSYS2 или git-bash.

Eryk Sun 11.07.2019 06:34

Неа. Это пакет Python с сайта python.org. То же самое, что работало годами без каких-либо проблем и только что начало капризничать с последним патчем для Windows.

notanumber 12.07.2019 18:25

Вы нашли решение? У меня такая же проблема.

Shanks 22.07.2019 10:54

К сожалению нет. Я живу с этим, так как делаю большую часть своей работы в Docker. Если получится, обязательно отпишусь о своих выводах!

notanumber 22.07.2019 21:15

Спасибо! Кину сюда, если разберусь.

Shanks 22.07.2019 23:28

См. также решение №1 superuser.com/a/1576801/93082mklink \Python39\python3.exe \Python39\python.exe

MarkHu 19.12.2020 01:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
188
7
265 578
19
Перейти к ответу Данный вопрос помечен как решенный

Ответы 19

Это не решение с PowerShell, но у меня была та же проблема, за исключением MINGW64. Я обошел это, переключившись на подсистему Windows для Linux (что я все равно хотел сделать) в качестве своего терминала, просто в общем и в VSCode. Этот пост описывает это хорошо:

Как настроить VS Code (Windows) для использования приложения Ubuntu в качестве терминала

В итоге:

1) Установите Ubuntu из магазина приложений Windows.

2) Измените bash по умолчанию с CMD -> wslconfig /setdefault Ubuntu

--- Для VSCode

3) Перезапустите VSCode

4) В VSCode измените "terminal.integrated.shell.windows" на "C:\WINDOWS\System32\bash.exe" (подробнее см. пост выше)

Теперь работает без сбоев в VSCode и WSL (Bash в Ubuntu в Windows). Может быть, по крайней мере, временное решение для вас.

Может быть, вы можете попробовать открыть командную строку с правами администратора. (Запустить от имени администратора). Работает для меня большую часть времени.

Исполняемый файл python работает в CMD даже без прав администратора. Проблема в том, что он не работает в Git Bash, который является важным инструментом для программистов и используется по умолчанию, и он работает с любым другим методом распространения для Python, а это значит, что он должен работать и здесь.

Ryan 11.08.2019 08:06
Ответ принят как подходящий

Насколько я могу судить, это было вызвано конфликтом с версией Python 3.7, недавно добавленной в Магазин Windows. Похоже, это добавило две «заглушки» с именами python.exe и python3.exe в папку %USERPROFILE%\AppData\Local\Microsoft\WindowsApps, и в моем случае это была вставленная до запись моего существующего исполняемого файла Python в PATH.

Перемещение этой записи ниже правильной папки Python (частично) устранило проблему.

Вторая часть исправления заключается в том, чтобы ввести manage app execution aliases в строку поиска Windows и полностью отключить версии Python из магазина.

manage app execution aliases

Возможно, вам нужно будет сделать только вторую часть, но в моей системе я внес оба изменения, и теперь все вернулось в норму.

У меня есть в переменной пути моего локального пользователя две ссылки на эту же папку, одна с буквальным путем, другая с относительным путем: C:\Users\blah\AppData\Local\Microsoft\WindowsApps — 4-я запись, а %USERPROFILE%\AppData\Local\Microsoft\WindowsApps — последняя запись в списке. -- С другой стороны, моя переменная пути система вообще не содержит ссылки на папку WindowsApps. Кроме того, ни один из них не содержит ссылки на какие-либо другие пути Python.

Ryan 11.08.2019 07:57

(Сотрудник Microsoft и основной разработчик CPython здесь) Вам определенно нужно сделать только вторую часть. Было несколько ошибок, связанных с обновлением приложений со сбросом псевдонимов, которые будут исправлены в следующем стабильном обновлении, поэтому к тому времени это должно быть единовременным исправлением. Пока вы получаете обновления Insiders, вам может понадобиться сделать это еще пару раз.

Zooba 12.08.2019 04:14

Кроме того, проблема «Отказано в доступе» является ошибкой Git Bash (или тем, кто поддерживает свой порт Bash... Я сам не уверен, чей это). И запуск Магазина — это новая функция, помогающая людям устанавливать Python — если вы добавили его в PATH с помощью обычного установщика, он должен иметь приоритет над новым перенаправителем, но если нет, вы узнали выше, как его отключить.

Zooba 12.08.2019 04:24

(Чтобы уточнить мой собственный комментарий: «если вы добавили его [Python, а не средство запуска Магазина] в PATH с помощью обычного установщика…»)

Zooba 12.08.2019 17:25

Мне просто нужно было перейти ко второй части, чтобы решить эту проблему для меня.

kennyB 02.10.2019 11:10

Для меня мне также пришлось добавить python к моему пути (C:\Users\YourUsernameHere\AppData\Local\Programs\Python\Pyt‌​hon37), чтобы git bash нашел python

Niels 08.10.2019 14:12

Я никогда ничего не делал с магазином Windows в отношении Python. Python также не указан в «Псевдонимах выполнения приложений».

ThaJay 28.11.2019 16:16

Я решил добавить его на мой путь и переместить наверх, как это сделал Нилс. Тот факт, что я не могу просто переименовать заглушку для заглушки магазина Windows, довольно раздражает.

John W. Clark 07.12.2019 15:51

Большое спасибо, это помогло мне решить мою проблему с запуском фляги из cmd (python)

TheCodeLearner 29.06.2020 18:35

выполнение только второй части приводит к сбою git bash при запуске с ошибкой «Нет доступных терминалов». такое безумие делает двойную загрузку и работу с хронической неспособностью Windows 10 совместно использовать систему красиво и привлекательно

worc 05.12.2020 07:50

На всякий случай это поможет. Я заставил это работать очень просто, выполнив alias python='winpty python.exe' в командной строке в git bash... В Windows 10 и после выполнения частей 1 и 2 выше...

Vida 16.12.2020 22:35

Для меня проблема заключалась в том, что python был перемещен в C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.17‌​76.0_x64__qbz5n2kfra‌​8p0\python3.8 вместо пути по умолчанию. Я удалил все пути как из возвышенных, так и из переменных env, переустановил, добавил новые пути, и теперь это работает. Единственная проблема в том, что это чистая установка, и мне нужно переустановить все зависимости.

raresm 16.01.2021 10:22

Какая пустая трата времени человечества. Какие бы стороны ни сговорились, чтобы это произошло, они должны серьезно обдумать свой выбор карьеры. Спасибо за исправления

Andrew Bullock 21.01.2021 20:24

Вы спасатель, и что, черт возьми, Microsoft?

Fabii 10.03.2021 18:54

Добавление пути вручную и отключение этих псевдонимов сделало это для меня Python 3.9.4

Mirza Sisic 19.04.2021 14:52

Исследование

Все файлы в %USERPROFILE%\AppData\Local\Microsoft\WindowsApps являются заполнителями, которые указывают на файлы, которые фактически находятся где-то в C:\Program Files\WindowsApps, которым полностью запрещены разрешения.

Похоже, я был на правильном пути с моим утверждением, сделанным в моем дубликате этой проблемы:

"Seems like they didn't really think about the distribution method screwing with permissions!"

Источник: Не удается установить pylint в Git Bash в Windows (Магазин Windows)

Разрешения по-царски облажались из-за метода распространения WindowsApps:

Интересно, что в нем говорится, что группа «Пользователи» может читать и выполнять файлы, а также мой конкретный пользователь, но группа «Администраторы» может только отображать содержимое папки по какой-то смешной непостижимой причине. И при попытке получить доступ к папке в проводнике он отказывается даже показывать содержимое папки, так что в этом тоже есть что-то подозрительное.

Интересно, что хотя выполнение python в CMD работает нормально, папка «WindowsApps» не отображается при перечислении файлов в каталоге, в котором она находится, и при попытке перейти в папку возникает ошибка «Отказано в доступе»:

Попытка изменить разрешения требует сначала смены владельца, поэтому я изменил владельца на группу «Администраторы». После этого я попытался изменить разрешения для группы «Администраторы», включив в них «Полный доступ», но изменить это не удалось, потому что «доступ был запрещен» (да, Micro$ucks, вот что мы пытаемся изменить!).

Эта ошибка разрешения произошла для такого количества файлов, что я использовал Alt + C, чтобы быстро нажать «Продолжить» в повторяющихся сообщениях, но это все равно заняло слишком много времени, поэтому я отменил процесс, в результате чего появилось это предупреждающее сообщение:

И теперь я не могу снова установить пользователя TrustedInstaller в качестве владельца папки WindowsApps, потому что он не отображается в списке пользователей/групп/встроенных принципов безопасности/других объектов. *

* На самом деле, согласно этот учебник, вы можете поменять владельца обратно на TrustedInstaller, введя NT Service\TrustedInstaller в текстовое поле имени объекта.

Решение

Нет решения. В общем, мы совсем запутались. Классный ход, Microsoft.

(Здесь сотрудник Microsoft и основной разработчик CPython) Сейчас есть ошибка, над которой я работаю, чтобы исправить ее в Windows, где вы можете запускать исполняемые файлы в этом месте, но только если у вас включен глобальный псевдоним (в разделе «Управление псевдонимами выполнения приложений»). Я пытаюсь изменить его, чтобы вам нужно было установить приложение только для текущего пользователя.

Zooba 12.08.2019 04:15

Мы можем прочитать разрешения через это диалоговое окно, потому что оно принадлежит экземпляру dllhost.exe (содержащему расширение оболочки безопасности, rshx32.dll), который работает с правами администратора и, таким образом, имеет доступ к «списку содержимого папки» (т. е. выполнение, синхронизация и чтение). данные, атрибуты и разрешения). Запись для группы пользователей не предназначена для обычной проверки доступа. Это зависит от наличия атрибута безопасности WIN://SYSAPPID, то есть любого приложения. Вложенная папка для каждого приложения предоставляет пользователям доступ для чтения, но доступ для выполнения зависит от запуска через ссылку приложения, которая устанавливает настраиваемый маркер доступа.

Eryk Sun 12.08.2019 06:41

@ErykSun Это первый информированный ответ, который я когда-либо видел о выполнении и разрешениях Windows. Спасибо.

Ryan 14.08.2019 15:00

На самом деле я все еще имею дело с последствиями попытки изменить разрешения для папки. Некоторые WinApps вообще перестали запускаться, пока я не выполнил следующие указания: (superuser.com/questions/1288014/…), но теперь они выдают сообщения об ошибках при запуске. Я использовал более старый USB-образ Win10, поэтому он, вероятно, неправильно установил разрешения.

Ryan 14.08.2019 15:10

Это просто поймало меня, спасибо за хорошее объяснение. Мы используем git bash для запуска сценариев оболочки для вызова сборки emscripten, и как часть стандартных сценариев emscripten он пытается угадать вашу версию python через $ (какой python) ... что немедленно взрывается.

Mark Simpson 28.01.2020 10:07

@MarkSimpson рад, что эта тема помогла. Не уверен, что я мог написать. Обязательно поблагодарите сотрудников Microsoft, которые разместили реальные ответы в комментариях здесь.

Ryan 29.01.2020 07:05

эта ошибка, кажется, все еще скрывается более года спустя ... насколько я могу судить, совместная работа GitBash, python и windows 10 все еще тупиковая.

worc 05.12.2020 07:54

Похоже, это ограничение в git-bash. Рекомендация использовать winpty python.exe сработала для меня. См. Python не работает в командной строке git bash для получения дополнительной информации.

У меня определенно есть проблема с запуском python из bash, но не из powershell, однако я не думаю, что ошибка, на которую вы ссылаетесь, является проблемой. Гораздо более вероятно, что это: github.com/msys2/MSys2-packages/issues/1943

Matthew 26.01.2021 12:16

дело в том, что Microsoft не имеет права изобретать новые функции операционной системы, поскольку они не будут стандартными, это может сделать только linux/posix. Итак, msys2, слава им за то, что они терпят все msft, которые у них есть, и я уверен, что они разберутся и с этим, но это не их вина, это msft

Dave Ankin 12.02.2021 13:59

сэкономить ваше время: используйте wsl and vscode remote extension для правильной работы с python даже с win10 и не забывайте virtualenv! полезный https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/

Самое простое, что можно сделать, это изменить переменные среды PATH и PYTHONPATH, чтобы убедиться, что папка, содержащая правильные двоичные файлы Python, ищется перед локальной папкой WindowsApp. Вы можете получить доступ к переменным среды, открыв панель управления и выполнив поиск «env».

Добавление локального пути Python до того, как WindowsApps решили проблему.

Environment Variables > Path

Bash Python --Version

это на самом деле сработало, это чертовски похоже на ситуацию. лол :D

Biskrem Muhammad 16.02.2021 18:09

Эта проблема слишком распространена, чтобы оставаться постоянной. И большинство ответов и инструкций не решают эту проблему. Вот что делать в Windows 10:

  1. Введите environment variables в стартовой строке поиска и откройте Отредактируйте системные переменные среды.

  2. Нажмите Переменные среды...

  3. В разделе «Системные переменные» найдите переменную с ключом Path и дважды щелкните по ней.

  4. Найдите пути, указывающие на файлы python. Скорее всего их нет. Если они есть, выберите и удалите их.

  5. Создайте новую переменную, указав путь к исполняемому файлу Python. Обычно это C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38. Убедитесь в этом, проверив через проводник.

    Примечание: Если вы не видите AppData, это потому, что у вас нет включен просмотр скрытых элементов: перейдите на вкладку «Вид» и установите флажок «Скрытые элементы».

  6. Создайте еще одну переменную, указывающую на каталог Scripts. Обычно это C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts.

  7. Перезапустите терминал и попробуйте ввести py, python, python3 или python.exe.

Что насчет пользователей, которые установили Python через Anaconda? Я сделал все на каждом шагу, системная переменная, указывающая на мою установку Python, существует в системных переменных, и проблема все еще сохраняется.

Martin 29.03.2021 15:52

Обходной путь: если вы установили python из exe, выполните следующие шаги.

Шаг 1. Удалите питон.

Шаг 2: Установите python и установите флажок «Путь к Python», как показано на снимке экрана ниже (желтый).

Это решило мою проблему.

Я сделал это после того, как установил Python — он не был установлен изначально, отсюда и ошибка :)

Jono 10.06.2021 15:53

Тогда вы должны были увидеть ошибку установки.

Shakeel 10.06.2021 16:25

ЭТО ПРАВИЛЬНЫЙ СПОСОБ!! СПАСИБО!!

Frank Guo 19.10.2021 10:03

Это связано с тем, как Windows Псевдонимы выполнения приложений работает в Git-Bash.

Это известная проблема в MSYS2не удается получить доступ к точкам повторной обработки Windows с помощью IO_REPARSE_TAG_APPEXECLINK.

Как обходной путь, вы можете использовать псевдоним для вызова функции, которая использует cmd.exe под капотом.

Добавьте следующее в ваш файл ~/.bashrc::

function python { cmd.exe /c "python $1 $2 $3";}

Для Python я бы рекомендовал просто отключить псевдонимы выполнения приложений, как в принятом ответе, но для библиотек, которые распространяются исключительно через магазин Windows, например winget, это ваш лучший вариант.

Дальнейшее чтение

Что касается меня, я попробовал manage app execution aliases и получил ошибку, что python3 не является командой, поэтому я использовал py вместо python3, и это сработало.

Я не знаю, почему это происходит, но это сработало для меня.

У меня возникла та же проблема, но в дополнение к тому, что Python был заблокирован, все программы в папке Scripts тоже были заблокированы. Другие ответы о псевдонимах, пути и winpty не помогли.

В конце концов я обнаружил, что это был мой антивирус (Avast), который по какой-то причине решил в одночасье просто заблокировать все скомпилированные скрипты Python по какой-то причине.

К счастью, это легко исправить: просто добавьте в белый список весь каталог Python. См. здесь для полного объяснения.

Добавьте путь к папке python в переменную среды, и она будет работать.

1.ищите переменную окружения

2. Найдите раздел системных переменных и найдите в нем путь к переменной с именем

3. Дважды щелкните путь и добавьте новый путь, который ведет к папке python, и все.

папка python обычно находится в C:\Users["имя пользователя"]\AppData\Local\Programs\Python\Python39

Простой ответ: замените питон на ПЯ и все будет работать как положено.

так что это новая вещь, реализованная в py 3.9.4?

dawn 19.04.2021 05:49

Может ли кто-нибудь добавить больше контекста о том, что такое PY?

secavfr 29.05.2021 12:07

сработало для меня, не уверен, сыворотка

Frank Guo 19.10.2021 09:59

У меня было это для запуска / выполнения, но не работало

python3 -m http.server 8080

прочитав и попробовав некоторые из приведенных выше решений, они не сработали, у меня сработало

python -m http.server 8080

да, у меня сработало при беге -m venv. Похоже, у меня может быть установлен python3 в двух местах, что вызывает это. Я подозреваю, что один из магазина Windows, а другой установлен vscode или что-то в этом роде. ``` $ which python /c/Users/me/AppData/Local/Programs/Python/Python39/python $ which python3 /c/Users/me/AppData/Local/Microsoft/WindowsApps/python3 ```

Josiah 10.03.2021 16:14

Для людей, которые приходят к этому вопросу, версия Python желание использовать Microsoft Store и после исправления Связанный «Управление псевдонимами выполнения приложений» от @Зуба, вероятно, произошло и используют Гит для Windows git-bash (также известный как BASH через msys2 mintty), решение, вероятно, просто чтобы не забыть вызвать с помощью winpty.'

winpty python3

Однако, если в системе были другие версии Python, убедитесь, что эти копии были удалены (например, те, что были установлены из python.org) или включены в их конкретное связанное приложение (например, OSGeo4W) (может потребоваться переупорядочивание переменных окружения).

Почему, если winpty забыто, это ошибка разрешения? При первом запуске заглушки Microsoft Store конфликтуют с разрешениями, доступными для msys. Многие другие ответы подробно рассказывают о том, что происходит и почему это кажется странным. Короткий ответ заключается в том, что заглушка пытается быть удобным кратчайшим путем к Магазину Microsoft. Если вы запустите его с помощью winpty, он сможет это сделать. После этого первого раза он по-прежнему нуждается в winpty как по связанным, так и по несвязанным причинам с Microsoft Store.

Есть и другие ответы, предполагающие winpty, но их рассуждения не связаны, неверны или устарели. Я чувствовал, что обновленная сводка за 2021 год может быть полезной.

Kevin 08.10.2021 16:17

В Windows 10

  • Открыть Панель управления
  • Нажмите Система
  • Щелкните ссылку Расширенные настройки системы.
  • Нажмите кнопку Переменные среды
  • В разделе «Системные переменные» найдите переменную среды ДОРОЖКА и выберите ее.
  • Нажмите «Изменить» (если переменная среды PATH не существует, нажмите «Создать»).
  • В окне Изменить переменную среды укажите значение переменной среды PATH.
  • Нажмите ОК
  • Закройте все оставшиеся окна, нажав ОК
  • Снова откройте окно командной строки и запустите python --version

убедитесь, что C:\Python39\ и C:\Python39\Scripts\ добавлены как к переменным пути системы, так и к переменным пути пользователя.

Это помогло мне запустить python, хотя python был установлен в C:\Program Files\Python36\. Убедитесь, что это добавлено в начало (начало) вашего PATH, иначе Windows может попытаться запустить версии python из Магазина Windows вместо версии, которую вы установили. Кроме того, я никогда не работал в git bash, но он будет работать в cmd или powershell.

trex 14.09.2021 00:01

Другие вопросы по теме