はじめに
pythonを使って共同で開発をしていたところ、以下のようなsubprocessでpython3
コマンドを使って非同期でファイル実行するコードが動かなかった。
subprocess.run(["python3", os.path.join(script_dir, "hogehoge.py")], check=True)
調べてみたところ、私の環境でpython3
コマンドではなく、python
コマンドでしかpythonを動かすことができない事が原因でした。
一人で開発する分にはコードのpython3という記述をpythonに変えてやるだけで良いのですが、共同開発なのでむやみに変更するわけにもいきません。
そこで今回はpython3
コマンドが動かない原因と解決策を調べたのでまとめいきます
python3が動かない原因
基本、windowsではpythonがpython.exeがインストールされていることが一般的です。
一方でLinuxやMac OSのようなUnix系システムではpython2.Xとpython3.Xコマンドが共存することが多いため、python
はpython2.Xを、python3
はpython3.Xを指すよう設定されていることが多いです。
そのため、windows環境ではpython
コマンドが、Mac,Linux環境ではpython3
コマンドが使われ、これが今回のエラーの原因のようです。
解決策
python3コマンドを実行したとき、python.exeを叩くよう設定します。
管理者権限を持ったコマンドプロンプトで以下のコマンドを実行します。
where python
ここで出てきたpython.exeのパスをコピー
そして
cd C:\Windows\System32
mklink python3.exe C:\Users\{ユーザーネーム}\AppData\Local\Programs\Python\Python310\python.exe
これでpython3コマンドがpython.exeに紐づけられ、python3
コマンドが使えるようになります。