web-dev-qa-db-ja.com

「権限が拒否されました」を実行しようとするとPython Windows 10で

Windows 10のアップデートが一晩Pythonを壊したかのようです。 python --versionを実行しようとすると、「アクセスが拒否されました」エラーが返されました。 3つの更新はありません。 KB4507453、KB4506991、またはKB4509096が原因であるように見えますが、問題のタイミングは疑わしいものです。ロールバックをいじるのではなく、欠けている簡単な修正があるといいのですが。

pythonのアクセス許可は "-rwxr-xr-x"であり、昨夜のパッチをインストールした後、Windowsに再起動マシンを更新させる以外は何も変更していません。

システム情報によると、私は10.0.18362を実行しています

これは、「管理者として実行」を使用してgit-bashからPythonを実行しようとするかどうか)に関係なく発生し、PowerShellを使用しようとすると、Windowsストアを開くだけであることにも注意してください。アプリがインストールされていないかのように、何らかの理由で/c/Users/david/AppData/Local/Microsoft/WindowsApps/フォルダーの内容を表示できないと思います。

また、Python 3.7.4を再インストールしようとしましたが、それでも解決しませんでした。他に何か注意点がありますか?

48
notanumber

私が知る限り、これは最近Windowsストアに追加されたPython 3.7のバージョンとの競合が原因でした。これは、python.exeと呼ばれる2つの「スタブ」を追加したようですとpython3.exeを%USERPROFILE%\AppData\Local\Microsoft\WindowsAppsフォルダ、そして私の場合、これは挿入されましたbefore私の既存のPython PATHの実行可能ファイルのエントリ。

このエントリを正しいPythonフォルダの下に移動すると、(部分的に)問題が修正されました。

修正の2番目の部分は、Windowsの検索プロンプトに「アプリ実行エイリアスの管理」と入力し、Pythonのストアバージョンをすべて無効にすることです。

2番目の部分だけを実行する必要がある可能性もありますが、私のシステムでは両方の変更を加えたため、すべてが正常に戻っています。

69
notanumber

研究

%USERPROFILE%\AppData\Local\Microsoft\WindowsApps内のすべてのファイルは、実際にはC:\Program Files\WindowsAppsのどこかに実際に配置されているファイルを指すプレースホルダーであり、たまたま権限が完全に拒否されています。

私はこの問題の私の複製で行われた私の声明で正しい軌道に乗っていたようです:

「彼らは許可でねじ込む配布方法について本当に考えていなかったようだ!」

ソース: Windows(Windowsストア)のGit Bashにpylintをインストールできません

WindowsAppsの配布方法が原因で、アクセス許可が不正に使用されています。

enter image description hereenter image description hereenter image description here 興味深いことに、 "Users"グループはファイルと私の特定のユーザーを読み取って実行できると述べていますが、Administratorsグループはいくつかの陽気に不可解な理由のためにフォルダの内容のみを一覧表示できます。また、ファイルエクスプローラーでフォルダーにアクセスしようとすると、フォルダーの内容を表示することさえ拒否されるので、それについても奇妙な点があります。

興味深いことに、CMDでpythonを実行しても問題なく機能しますが、「WindowsApps」フォルダーは、それが存在するディレクトリ内のファイルを一覧表示すると表示されず、フォルダーに移動しようとすると「権限が拒否されました」が生成されます。エラー:

enter image description here

アクセス許可を変更するには、最初に所有者を変更する必要があるため、所有者をAdministratorsグループに変更しました。その後、Administratorsグループのアクセス許可を変更してフルコントロールを含めようとしましたが、「アクセスが拒否された」ため、これを変更できませんでした(そうですね、Micro $ ucks、それが変更しようとしていることです!)。

enter image description here

この権限エラーは非常に多くのファイルで発生したため、Alt + Cを使用して繰り返しメッセージの[続行]をすばやくクリックしましたが、これでもまだ時間がかかりすぎたため、プロセスをキャンセルし、次の警告メッセージがポップアップしました。

enter image description here

また、TrustedInstallerユーザーをWindowsAppsフォルダーの所有者として戻すことはできません。ユーザー/グループ/組み込みのセキュリティ原則/その他のオブジェクトのリストに表示されないためです。 *

enter image description here

*実際には、 このチュートリアル に従って、オブジェクト名のテキストボックスにNT Service\TrustedInstallerと入力して、所有者をTrustedInstallerに戻すことができます。

解決

解決策はありません。基本的に、完全にねじ込まれています。上品な動き、マイクロソフト。

14
Ryan

これはgit-bashの制限のようです。 winpty python.exeを使用するという推奨事項がうまくいきました。詳細については Pythonがgit bashのコマンドラインで機能しない を参照してください。

4
John Fisher

これはPowerShellのソリューションではありませんが、MINGW64以外は同じ問題がありました。私はターミナルとしてLinuxのWindowsサブシステム(とにかくやりたかった)に切り替えることで、一般的に、VSCodeでそれを回避しました。この投稿はそれをうまく説明しています:

buntu Appをターミナルとして使用するようにVS Code(windows)を構成する方法

要約すれば:

1)Windows App StoreからUbuntuをインストールします

2)CMDからデフォルトのbashを変更します-> wslconfig/setdefault Ubuntu

--- VSCodeの場合

3)VSCodeを再起動します

4)VSCodeで、「terminal.integrated.Shell.windows」を「C:\ WINDOWS\System32\bash.exe」に変更します(詳細については、上記の投稿を参照してください)

VSCodeとWSL(Windows上のUbuntuのBash)でスムーズに実行されるようになりました。少なくとも一時的な解決策になるかもしれません。

3
Shanks

最も簡単なことは、PATHおよびPYTHONPATH環境変数を変更して、適切なpythonバイナリを含むフォルダーがローカルWindowsAppフォルダーの前に検索されるようにすることです。環境変数にアクセスするには、コントロールパネルを開いて「env」を検索する

0

管理者権限でコマンドプロンプトを開いてみてください。 (管理者として実行)。ほとんどの場合私にとってはうまくいきます。

0
Imtiyaz Shaikh

時間を節約する:wsl and vscode remote extensionを使用して、pythonをwin10でも正しく機能させ、virtualenvを忘れないでください!便利です https ://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/

0
rio