Pythonの仮想環境のディレクトリ位置を変更後 pipやaccelerate コマンドを実行すると "Fatal error in launcher"エラーが発生する現象と対処法を紹介します。
Pythonの仮想環境の実行ディレクトリを変更後に、仮想環境に切り替えて、pipコマンドや、accelerate コマンドを実行すると以下のエラーが発生します。
pipやその他のexeファイルが実行するpythonのパスはインストール時にバイナリ内に組み込まれます。
ディレクトリの位置が変化したのちにpipや仮想環境のScriptディレクトリ内のexeファイルのコマンドを実行すると、
バイナリ内に埋め込まれた旧仮想環境のパスのpython.exeを実行しようとし、python.exeが見つからずにエラーとなります。
venv
ディレクトリを削除し、再度、python -m venv venv
コマンドを実行し、仮想環境を再インストールする方法があります。
一番確実でおすすめの方法です。
すべてのパッケージを再インストールします。
初めに仮想環境に切り替え、以下のコマンドを実行して、pipを再インストールします。
python -m pip install --upgrade --force-reinstall pip
次に以下のpipコマンドを実行し、現在の仮想環境インストールされているパッケージのリストを取得します。
pip freeze > list.txt
出力された、list.txtを編集します。パッケージのインストール元がpipで対応していないGitHub経由のパッケージを削除します。
編集後、以下のコマンドを実行して、パッケージを再インストールします。
pip install --upgrade --force-reinstall -r list.txt
移動をあきらめ元の位置のまま利用する方法です。
venvディレクトリ内のpython.exeのみを旧パスに残しておく方法です。
pip.exe内に埋め込まれている旧パスのpython.exeのパスを書き換える方法です。
Scriptsディレクトリ内のすべてのexeファイルにパスが埋め込まれているため、exeファイルの数が多い場合はお勧めできません。
pip.exeを例にします。
拡張子をbinに変更します。
バイナリエディタで開きます。
exeファイルの末尾部分にパスが記述されている箇所があります。移動前の旧仮想環境のpython.exeのフルパスが記述されています。
パスを修正します。
ファイルを保存し、拡張子をexeに戻します。
仮想環境のpip.exeを上書きして置き換えます。
pipコマンドを実行してエラーが発生しないことを確認します。