Похоже, что обновление 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, но это тоже не помогло. Есть ли что-то еще, на что я должен смотреть?
Кстати, «разрешения на python — '-rwxr-xr-x'», вероятно, бессмысленны в Windows. Это что-то фальшивое, о котором сообщает Unix-подобная среда, такая как MSYS2 или git-bash.
Неа. Это пакет Python с сайта python.org. То же самое, что работало годами без каких-либо проблем и только что начало капризничать с последним патчем для Windows.
Вы нашли решение? У меня такая же проблема.
К сожалению нет. Я живу с этим, так как делаю большую часть своей работы в Docker. Если получится, обязательно отпишусь о своих выводах!
Спасибо! Кину сюда, если разберусь.
См. также решение №1 superuser.com/a/1576801/93082mklink \Python39\python3.exe \Python39\python.exe






Это не решение с 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, а это значит, что он должен работать и здесь.
Насколько я могу судить, это было вызвано конфликтом с версией Python 3.7, недавно добавленной в Магазин Windows. Похоже, это добавило две «заглушки» с именами python.exe и python3.exe в папку %USERPROFILE%\AppData\Local\Microsoft\WindowsApps, и в моем случае это была вставленная до запись моего существующего исполняемого файла Python в PATH.
Перемещение этой записи ниже правильной папки Python (частично) устранило проблему.
Вторая часть исправления заключается в том, чтобы ввести manage app execution aliases в строку поиска Windows и полностью отключить версии Python из магазина.
Возможно, вам нужно будет сделать только вторую часть, но в моей системе я внес оба изменения, и теперь все вернулось в норму.
У меня есть в переменной пути моего локального пользователя две ссылки на эту же папку, одна с буквальным путем, другая с относительным путем: C:\Users\blah\AppData\Local\Microsoft\WindowsApps — 4-я запись, а %USERPROFILE%\AppData\Local\Microsoft\WindowsApps — последняя запись в списке. -- С другой стороны, моя переменная пути система вообще не содержит ссылки на папку WindowsApps. Кроме того, ни один из них не содержит ссылки на какие-либо другие пути Python.
(Сотрудник Microsoft и основной разработчик CPython здесь) Вам определенно нужно сделать только вторую часть. Было несколько ошибок, связанных с обновлением приложений со сбросом псевдонимов, которые будут исправлены в следующем стабильном обновлении, поэтому к тому времени это должно быть единовременным исправлением. Пока вы получаете обновления Insiders, вам может понадобиться сделать это еще пару раз.
Кроме того, проблема «Отказано в доступе» является ошибкой Git Bash (или тем, кто поддерживает свой порт Bash... Я сам не уверен, чей это). И запуск Магазина — это новая функция, помогающая людям устанавливать Python — если вы добавили его в PATH с помощью обычного установщика, он должен иметь приоритет над новым перенаправителем, но если нет, вы узнали выше, как его отключить.
(Чтобы уточнить мой собственный комментарий: «если вы добавили его [Python, а не средство запуска Магазина] в PATH с помощью обычного установщика…»)
Мне просто нужно было перейти ко второй части, чтобы решить эту проблему для меня.
Для меня мне также пришлось добавить python к моему пути (C:\Users\YourUsernameHere\AppData\Local\Programs\Python\Python37), чтобы git bash нашел python
Я никогда ничего не делал с магазином Windows в отношении Python. Python также не указан в «Псевдонимах выполнения приложений».
Я решил добавить его на мой путь и переместить наверх, как это сделал Нилс. Тот факт, что я не могу просто переименовать заглушку для заглушки магазина Windows, довольно раздражает.
Большое спасибо, это помогло мне решить мою проблему с запуском фляги из cmd (python)
выполнение только второй части приводит к сбою git bash при запуске с ошибкой «Нет доступных терминалов». такое безумие делает двойную загрузку и работу с хронической неспособностью Windows 10 совместно использовать систему красиво и привлекательно
На всякий случай это поможет. Я заставил это работать очень просто, выполнив alias python='winpty python.exe' в командной строке в git bash... В Windows 10 и после выполнения частей 1 и 2 выше...
Для меня проблема заключалась в том, что python был перемещен в C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\python3.8 вместо пути по умолчанию. Я удалил все пути как из возвышенных, так и из переменных env, переустановил, добавил новые пути, и теперь это работает. Единственная проблема в том, что это чистая установка, и мне нужно переустановить все зависимости.
Какая пустая трата времени человечества. Какие бы стороны ни сговорились, чтобы это произошло, они должны серьезно обдумать свой выбор карьеры. Спасибо за исправления
Вы спасатель, и что, черт возьми, Microsoft?
Добавление пути вручную и отключение этих псевдонимов сделало это для меня Python 3.9.4
Все файлы в %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, где вы можете запускать исполняемые файлы в этом месте, но только если у вас включен глобальный псевдоним (в разделе «Управление псевдонимами выполнения приложений»). Я пытаюсь изменить его, чтобы вам нужно было установить приложение только для текущего пользователя.
Мы можем прочитать разрешения через это диалоговое окно, потому что оно принадлежит экземпляру dllhost.exe (содержащему расширение оболочки безопасности, rshx32.dll), который работает с правами администратора и, таким образом, имеет доступ к «списку содержимого папки» (т. е. выполнение, синхронизация и чтение). данные, атрибуты и разрешения). Запись для группы пользователей не предназначена для обычной проверки доступа. Это зависит от наличия атрибута безопасности WIN://SYSAPPID, то есть любого приложения. Вложенная папка для каждого приложения предоставляет пользователям доступ для чтения, но доступ для выполнения зависит от запуска через ссылку приложения, которая устанавливает настраиваемый маркер доступа.
@ErykSun Это первый информированный ответ, который я когда-либо видел о выполнении и разрешениях Windows. Спасибо.
На самом деле я все еще имею дело с последствиями попытки изменить разрешения для папки. Некоторые WinApps вообще перестали запускаться, пока я не выполнил следующие указания: (superuser.com/questions/1288014/…), но теперь они выдают сообщения об ошибках при запуске. Я использовал более старый USB-образ Win10, поэтому он, вероятно, неправильно установил разрешения.
Это просто поймало меня, спасибо за хорошее объяснение. Мы используем git bash для запуска сценариев оболочки для вызова сборки emscripten, и как часть стандартных сценариев emscripten он пытается угадать вашу версию python через $ (какой python) ... что немедленно взрывается.
@MarkSimpson рад, что эта тема помогла. Не уверен, что я мог написать. Обязательно поблагодарите сотрудников Microsoft, которые разместили реальные ответы в комментариях здесь.
эта ошибка, кажется, все еще скрывается более года спустя ... насколько я могу судить, совместная работа GitBash, python и windows 10 все еще тупиковая.
Похоже, это ограничение в git-bash. Рекомендация использовать winpty python.exe сработала для меня. См. Python не работает в командной строке git bash для получения дополнительной информации.
У меня определенно есть проблема с запуском python из bash, но не из powershell, однако я не думаю, что ошибка, на которую вы ссылаетесь, является проблемой. Гораздо более вероятно, что это: github.com/msys2/MSys2-packages/issues/1943
дело в том, что Microsoft не имеет права изобретать новые функции операционной системы, поскольку они не будут стандартными, это может сделать только linux/posix. Итак, msys2, слава им за то, что они терпят все msft, которые у них есть, и я уверен, что они разберутся и с этим, но это не их вина, это msft
сэкономить ваше время:
используйте 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».
Эта проблема слишком распространена, чтобы оставаться постоянной. И большинство ответов и инструкций не решают эту проблему. Вот что делать в Windows 10:
Введите environment variables в стартовой строке поиска и откройте Отредактируйте системные переменные среды.
Нажмите Переменные среды...
В разделе «Системные переменные» найдите переменную с ключом Path и дважды щелкните по ней.
Найдите пути, указывающие на файлы python. Скорее всего их нет. Если они есть, выберите и удалите их.
Создайте новую переменную, указав путь к исполняемому файлу Python. Обычно это C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38. Убедитесь в этом, проверив через проводник.
Примечание: Если вы не видите AppData, это потому, что у вас нет включен просмотр скрытых элементов: перейдите на вкладку «Вид» и установите флажок «Скрытые элементы».
Создайте еще одну переменную, указывающую на каталог Scripts. Обычно это C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts.
Перезапустите терминал и попробуйте ввести py, python, python3 или python.exe.
Что насчет пользователей, которые установили Python через Anaconda? Я сделал все на каждом шагу, системная переменная, указывающая на мою установку Python, существует в системных переменных, и проблема все еще сохраняется.
Обходной путь: если вы установили python из exe, выполните следующие шаги.
Шаг 1. Удалите питон.
Шаг 2: Установите python и установите флажок «Путь к Python», как показано на снимке экрана ниже (желтый).
Это решило мою проблему.
Я сделал это после того, как установил Python — он не был установлен изначально, отсюда и ошибка :)
Тогда вы должны были увидеть ошибку установки.
ЭТО ПРАВИЛЬНЫЙ СПОСОБ!! СПАСИБО!!
Это связано с тем, как 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?
Может ли кто-нибудь добавить больше контекста о том, что такое PY?
сработало для меня, не уверен, сыворотка
У меня было это для запуска / выполнения, но не работало
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 ```
Для людей, которые приходят к этому вопросу, версия 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 год может быть полезной.
В Windows 10
python --versionубедитесь, что C:\Python39\ и C:\Python39\Scripts\ добавлены как к переменным пути системы, так и к переменным пути пользователя.
Это помогло мне запустить python, хотя python был установлен в C:\Program Files\Python36\. Убедитесь, что это добавлено в начало (начало) вашего PATH, иначе Windows может попытаться запустить версии python из Магазина Windows вместо версии, которую вы установили. Кроме того, я никогда не работал в git bash, но он будет работать в cmd или powershell.
Вероятно, стоит проверить веб-сайт Microsoft. Я где-то читал, извините, не помню где, что у других людей были проблемы с этим обновлением - кажется, пустой экран. В любом случае, ожидание, пока они исправят это через день или два, может оказаться ответом.