2020-03-10
Update1: あなたの macOS には何種類のPythonが入っていますか?私は401種類でしたが。
Update2: わりかん がん保険 やってます
2020-03-15
Update3: タイトルが Window 10 だったのを Windows 10 に修正。無意識typoでした。
タイトルは煽りです。WSL Ubuntu 18.04 上にはpyenv経由で3種類+OS由来の2種類で合計10種類でした。
なぜこの記事を書こうとしたのか
背景を説明します。ひさびさにWindows 10を開いたのでセキュリティアップデートも兼ねて Visual Studio Comminity 2019 update や Microsft Store からのアプリのアップデートをよく確認せずに実行したところ、Git bash から python が起動しなくなってしまったのでした。
そもそも Microsoft Store版pythonのinstallは意図すらしていなかったのだが、Git Bash からのpython実行がエラーを起こしていたため、その原因を探る過程で(過去の残骸も含めた)python達のインストール状況を調査した。
インストーラーの分類
version | installer type | installed path |
---|---|---|
python 3.7.5 | Visual studio community 2019 installer | "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64" |
python 3.8.2 | Microsoft Store | (alias) "%USERPROFILE%\AppData\Local\Microsoft\WindowsApps" |
python 3.6.5 | Anaconda | (Just me) "%USERPROFILE%\Anaconda3" (All users) "C:\ProgramData\Anaconda3" [個人的に "C:\Anaconda" へ変更していた] |
python 3.7.4 | R's reticulate installation of miniconda | "%LOCALAPPDATA%\r-miniconda" |
python 3.5.2 | Official exec installer | "%LOCALAPPDATA%\Programs\Python\Python35" |
Note:
-
%LOCALAPPDATA%
isC:\Users\your_login_name\AppData\Local
-
%USERPROFILE%
isC:\Users\your_login_name
環境変数を編集して優先して使うpythonを指定
[Window key] を押し path
と入力して システム環境変数を編集
を選択。環境変数 -> 変数のPATH をダブルクリック。優先して使いたいpythonのpathを 上へ
で調整する。
なお、Windows 10 には究極の恐ろしいバグが含んでおり、なんと環境変数をGUIで入力すると(ユーザー環境変数、システム環境変数それぞれ)2048文字以上は認識しないということだ。 @ITの記事がとても参考になる
結局どの Python を残したのか。
ぶっちゃけ WSL Ubuntu 上の作業が多いので、Windows上のpythonは全削除。とはいかずに RSutido から reticulate でたまに使うので、それだけ残す方針とした。いまのところは不便はない。
付随で見つけたゴミフォルダ達
問答無用で削除
- "%LOCALAPPDATA%Python Tools"
- "%LOCALAPPDATA%\Roaming\Python\Python35"
Git Bash からの python の起動が Permission denied で失敗する理由と対応方法。
python -V
bash: /c/Users/your_account/AppData/Local/Microsoft/WindowsApps/python: Permission denied
これは、 Git Bash 上から python -V
などを実行したとき、MiscroSoft Store 版の python がインストールされて、かつ path として USERPROFILE%\AppData\Local\Microsoft\WindowsApps
に最初に python が見つかる場合に起こるエラーである。
対処法
MINGW 由来のバグのため Git Bash (via vscode terminal 含む) からの実行の、根本対処はない。( Python official bug tracker にて報告有り、stackoverflowにて解説あり)
- cmd, powershell からは実行できるため、Git Bash を使わない
- Microsoft Store 版以外のpythonをインストールし、かつ
USERPROFILE%\AppData\Local\Microsoft\WindowsApps
のpathの優先度を下げる。
まとめ
Windows 10 での Python 汚染に気を付けよう
参考