Windows 10'da Python'u çalıştırmaya çalışırken "İzin Reddedildi"


108

Görünüşe göre Windows 10'da bir gecede yapılan bir güncelleme Python'u bozdu. Sadece çalıştırmaya çalışmak python --version"İzin Verilmedi" hatası döndürdü. Üç güncellemeden hiçbiri; KB4507453, KB4506991 veya KB4509096, suçlu gibi görünüyorlar ancak sorunun zamanlaması şüpheli. Geri dönüşle uğraşmak yerine, kaçırdığım daha basit bir düzeltme olduğunu umuyorum.

Python üzerindeki izinler "-rwxr-xr-x" ve dün geceki yamaları yükledikten sonra Windows güncellemesinin makineyi yeniden başlatmasına izin vermekten başka hiçbir şeyi değiştirmedim.

Sistem Bilgisine göre 10.0.18362 çalıştırıyorum

Ayrıca, Python'u git-bash'dan "yönetici olarak çalıştır" kullanarak çalıştırsam da (denesem de) bunun olduğunu ve PowerShell'i kullanmayı denersem, Windows mağazasını sanki uygulama yüklenmemiş gibi açar. /c/Users/david/AppData/Local/Microsoft/WindowsApps/Bazı nedenlerden dolayı klasörümün içeriğini göremediğini düşünüyorum .

Ayrıca Python 3.7.4'ü yeniden yüklemeyi denedim, ancak bu da yardımcı olmadı. Bakmam gereken başka bir şey var mı?


Muhtemelen Microsoft web sitesini kontrol etmeye değer. Bir yerde okudum, üzgünüm nerede olduğunu hatırlayamıyorum, diğer insanların bu güncellemeyle ilgili sorunları olduğunu düşünüyorum - boş ekran. Her neyse, bir veya iki gün içinde düzeltmelerini beklemek çözüm olabilir.
Ant

BTW, "python üzerindeki izinler '-rwxr-xr-x'dir" muhtemelen Windows'ta anlamsızdır. Bu, MSYS2 veya git-bash gibi Unix benzeri bir ortam tarafından bildirilen sahte bir şey.
Eryk Sun

Hayır! Bu, python.org'un Python paketidir. Aynı şey yıllarca sorunsuz çalışıyor ve en son Windows yamasıyla harekete geçmeye başladı.
notanumber

bir çözüm buldun mu? Bende de aynı sorun var.
Shanks

Ne yazık ki hayır. İşimin çoğunu Docker'da yaptığım için onunla yaşıyorum. Bunu yaparsam, bulgularımı göndereceğimden emin olacağım!
notanumber

Yanıtlar:


178

Anladığım kadarıyla, bu, Windows Mağazası'na yakın zamanda eklenen Python 3.7 sürümüyle bir çatışmadan kaynaklanıyordu. İçine python.exe ve python3.exe denilen bu katma iki "taslakları" gibi görünüyor %USERPROFILE%\AppData\Local\Microsoft\WindowsAppsklasörüne ve benim durumumda, bu sokulmuş önce benim mevcut Python çalıştırılabilir programın girişi PATH.

Bu girişi doğru Python klasörünün altına (kısmen) taşımak sorunu düzeltti.

Düzeltmenin ikinci kısmı manage app execution aliases, Windows arama istemine yazmak ve Python'un mağaza sürümlerini tamamen devre dışı bırakmaktır.

uygulama çalıştırma takma adlarını yönet

Yalnızca ikinci bölümü yapmanız gerekebilir, ancak sistemimde her iki değişikliği de yaptım ve şimdi her şey normale döndü.


47
(Microsoft çalışanı ve CPython çekirdek geliştiricisi burada) Kesinlikle sadece ikinci kısmı yapmanız gerekiyor. Bir sonraki kararlı güncellemede düzeltilecek olan takma adları sıfırlayan uygulamaları yükseltmeyle ilgili birkaç hata olmuştur, bu nedenle o zamana kadar tek seferlik bir düzeltme olmalıdır. Insiders güncellemelerini alırken bunu birkaç kez daha yapmanız gerekebilir.
Zooba

7
Ayrıca, "Erişim Engellendi" sorunu bir Git Bash hatasıdır (veya Bash bağlantı noktasını kim idare ederse ... ben kimin olduğundan emin değilim). Ve Mağaza'yı başlatmak, insanların Python'u yüklemelerine yardımcı olan yeni bir özelliktir - eğer onu normal yükleyiciyi kullanarak PATH'a eklediyseniz, yeni yönlendiriciye göre öncelikli olmalıdır, ancak yukarıda nasıl devre dışı bırakılacağını keşfetmediyseniz.
Zooba

4
Bu sorunu benim için düzeltmek için sadece ikinci kısma geçmek zorunda kaldım.
kennyB

5
Benim için git bash'ın python
Niels

1
Bunu yoluma eklemek ve onu zirveye taşımak, tıpkı Neils'in yaptığı gibi benim çözümümdü. Windows mağazası koçanının adını değiştiremeyeceğim gerçeği oldukça can sıkıcı.
John W. Clark

23

Araştırma

İçindeki tüm %USERPROFILE%\AppData\Local\Microsoft\WindowsAppsdosyalar, aslında içinde bir yerde bulunan C:\Program Files\WindowsAppsve izinleri tamamen reddedilen dosyalara işaret eden yer tutuculardır .

Görünüşe göre bu sorunun kopyasında yaptığım ifadeyle doğru yoldayım:

"İzinleri bozan dağıtım yöntemini gerçekten düşünmemişler gibi görünüyor!"

Kaynak: Windows'ta (Windows Mağazası) Git Bash'e pylint yüklenemiyor

WindowsApps dağıtım yöntemi nedeniyle izinler asil bir şekilde bozuldu:

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin İlginç bir şekilde, "Kullanıcılar" grubunun, benim özel kullanıcımın yanı sıra dosyaları okuyup çalıştırabildiğini söylüyor, ancak Yöneticiler grubu, komik bir şekilde anlaşılmaz bir nedenden ötürü yalnızca klasör içeriklerini listeleyebilir. Klasöre Dosya Gezgini'nde erişmeye çalışırken, klasör içeriğini göstermeyi bile reddediyor, bu yüzden bunda da balıklı bir şey var.

İlginç bir şekilde, pythonCMD'de yürütme gayet iyi çalışsa da , "WindowsApps" klasörü dosyaları bulunduğu dizinde listelerken görünmüyor ve klasöre gitmeye çalışıldığında "İzin reddedildi" hatası veriyor:

görüntü açıklamasını buraya girin

İzinleri değiştirmeye çalışmak önce sahibin değiştirilmesini gerektirir, bu yüzden sahibi Yöneticiler grubuna değiştirdim. Bundan sonra, Yöneticiler grubunun izinlerini Tam denetimi içerecek şekilde değiştirmeyi denedim, ancak bunu değiştiremedim çünkü "erişim reddedildi" (duh, Micro $ ucks, değiştirmeye çalıştığımız şey bu!).

görüntü açıklamasını buraya girin

Bu izin hatası o kadar çok dosyada meydana geldi ki, tekrarlanan mesajlarda "Devam" ı hızlıca tıklamak için Alt + C kullandım, ancak bu yine de çok uzun sürdü, bu yüzden işlemi iptal ettim ve bu uyarı mesajının ortaya çıkmasına neden oldu:

görüntü açıklamasını buraya girin

Ve şimdi TrustedInstaller kullanıcısını WindowsApps klasörünün sahibi olarak ayarlayamıyorum çünkü bu Kullanıcılar / Gruplar / Yerleşik güvenlik ilkeleri / Diğer nesneler listesinde görünmüyor. *

görüntü açıklamasını buraya girin

* Aslında, bu eğiticiye göre NT Service\TrustedInstaller, nesne adı metin kutusuna yazarak sahibi tekrar TrustedInstaller ile değiştirebilirsiniz .

Çözüm

Çözümü yok. Temel olarak, tamamen mahvolduk. Şık hareket, Microsoft.


11
(Burada Microsoft çalışanı ve CPython çekirdek geliştiricisi) Şu anda Windows'ta bu konumda çalıştırılabilir dosyaları başlatabileceğiniz bir hata düzeltmek için çalışıyorum, ancak yalnızca genel takma adı etkinleştirdiyseniz (Uygulama Yürütme diğer adlarını yönetme bölümünde). Uygulamayı yalnızca mevcut kullanıcı için yüklemeniz gerekecek şekilde değiştirilmesini sağlamaya çalışıyorum.
Zooba

4
Yönetici erişimiyle çalışan bir dllhost.exe örneğine (güvenlik kabuğu uzantısı, rshx32.dll barındıran) ait olduğu için izinleri bu iletişim kutusu aracılığıyla okuyabiliriz ve bu nedenle "klasör içeriğini listeleme" erişimine (yani, yürütme; eşitleme; ve oku veriler, öznitelikler ve izinler). Kullanıcı grubu girişi, normal erişim kontrolü için değildir. WIN: // SYSAPPID güvenlik özniteliğinin, yani herhangi bir uygulamanın varlığına bağlıdır. Her uygulamanın alt klasörü, kullanıcılara okuma erişimi verir, ancak yürütme erişimi, özel bir erişim belirteci ayarlayan uygulama bağlantısı aracılığıyla çalıştırma koşuluna bağlıdır.
Eryk Sun

@ErykSun Bu, Windows uygulaması ve izinleri hakkında gördüğüm ilk bilgilendirilmiş cevap. Teşekkürler.
Ryan

Aslında hala klasördeki izinleri değiştirmeye çalışmaktan kaynaklanan sonuçlarla uğraşıyorum. Ben şu yönergeleri uygulayana kadar bazı WinApps başlatmayı tamamen durdurdu: ( superuser.com/questions/1288014/… ) ancak şimdi başlatma sırasında hata mesajları veriyorlar. Daha eski bir Win10 USB görüntüsü kullandım, bu yüzden muhtemelen izinleri yanlış ayarladı.
Ryan

1
@MarkSimpson bu konuya yardım etti. Ne yazdığımdan emin değilim. Buradaki yorumlarda gerçek yanıtlar yayınlayan Microsoft çalışanlarına teşekkür ettiğinizden emin olun.
Ryan


10

Bu sorun hala kalıcı olamayacak kadar yaygındır. Ve çoğu cevap ve talimat bunu ele almıyor. Windows 10'da yapmanız gerekenler:

  1. Tip environment variablesbaşlangıç arama çubuğuna ve açıkta Edit Sistemi Ortam Değişkenleri .

  2. Ortam Değişkenleri'ni tıklayın ...

  3. Sistem Değişkenleri bölümünde, değişkeni anahtarla bulun Pathve çift tıklayın.

  4. Python dosyalarına işaret eden yolları arayın. Muhtemelen hiç yoktur. Varsa, seçin ve silin.

  5. Python çalıştırılabilirinizin yoluna yeni bir değişken kümesi oluşturun. Normalde budur C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38. Dosya Gezgini aracılığıyla kontrol ederek bunu sağlayın.

    Not : Göremiyorsanız AppData, bunun nedeni gizli öğelerin görüntülenmesini etkinleştirmemiş olmanızdır : Görünüm sekmesini tıklayın ve Gizli Öğeler onay kutusunu işaretleyin.

  6. ScriptsDizine işaret eden başka bir değişken oluşturun . Tipik olarak öyledir C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts.

  7. Terminal ve deneyin yazarak yeniden başlatın py, python, python3, veya python.exe.


4

PowerShell ile bir çözüm değil, ancak MINGW64 dışında aynı sorunu yaşadım. Genelde ve VSCode'da terminalim olarak Linux için Windows Alt Sistemine (zaten yapmak istediğim) geçerek bunu aştım. Bu gönderi onu iyi açıklıyor:

Ubuntu Uygulamasını terminal olarak kullanmak için VS Code (Windows) nasıl yapılandırılır

Özetle:

1) Ubuntu'yu Windows App Store'dan yükleyin

2) Varsayılan bash'yi CMD -> wslconfig / setdefault Ubuntu'dan değiştirin

--- VSCode için

3) VSCode'u yeniden başlatın

4) VSCode'da "terminal.integrated.shell.windows" u "C: \ WINDOWS \ System32 \ bash.exe" olarak değiştirin (daha fazla ayrıntı için yukarıdaki gönderiye bakın)

Şimdi VSCode ve WSL'de (Windows'ta Ubuntu'da Bash) sorunsuz çalışıyor. Sizin için en azından geçici bir çözüm olabilir.


3

WindowsApps sorunu çözmeden önce Yerel Python Yolunu eklemek.

Ortam Değişkenleri> Yol

Bash Python - Sürüm


1

Yapılacak en basit şey, yerel WindowsApp klasöründen önce uygun python ikili dosyalarını içeren klasörün arandığından emin olmak için PATH ve PYTHONPATH çevresel değişkenlerinizi değiştirmek olacaktır. Çevre değişkenlerine, kontrol panelini açıp "env" araması yaparak erişebilirsiniz.


0

Çözüm: Python'u exe'den yüklediyseniz aşağıdaki adımları izleyin.

Adım 1: Python'u kaldırın

Adım 2: Python'u kurun ve aşağıdaki screentshot (sarı) bölümünde vurgulandığı gibi Python yolu onay kutusunu işaretleyin.

Bu bana sorunu çözdü.

görüntü açıklamasını buraya girin


-1

Yönetici ayrıcalıklarıyla komut istemini açmayı deneyebilirsiniz. (Yönetici olarak çalıştır). Çoğu zaman benim için çalışıyor.


3
Yürütülebilir python, Yönetici ayrıcalıkları olmadan bile CMD'de çalışır. Sorun şu ki, programcılar için önemli bir araç olan ve varsayılan olan Git Bash'de çalışmıyor ve Python için diğer tüm dağıtım yöntemleriyle çalışıyor, yani burada da [yapılması] gerekiyor.
Ryan

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.