そのため、最近、bash
シェルからzsh
に変更しました。ただし、python
、具体的にはpipを使用するときに問題が発生します。やってみると
pip list
ModuleNotFoundError: No module named 'pip._internal.main'
やっているwhich pip
がくれます/home/marvin/.local/bin/pip
、つまりbashrc
に表示された行に従って、これをzshrc
に追加しました
# adding packages installed via pip
export PATH="/home/marvin/.local/bin:$PATH"
また、試すためにシェルとマシンを再起動しました。それでも、pipを使用して仮想環境を操作することはできません。誰かがこれの解決策を教えてくれませんか?
[編集]
だから私はやった
python3 -m pip install --user --upgrade pip
そしてそれをグローバルに機能させました。残念ながら、私は仮想環境を再作成する必要がありました。しかし、しゃっくりは、シェル間の切り替えは環境の再作成を意味します。これを行うためのより良い方法があるはずです
このエラーメッセージを確認しましたが、これは$PATH
に関連する問題でした。
トラブルシューティングの手順は次のとおりです。
echo $PATH
を使用してパスを表示できます。
which pip
とwhich python
は同じ場所を返す必要があります。これらのコマンドは、$PATH
のディレクトリを検索して、実行可能ファイルが含まれる最初の場所を見つけます。
pyenv
を使用している場合、which pip
とwhich python
は同じ「shims」ディレクトリを返しますが、実行可能ファイルが同じディレクトリから実行されているとは限りません。その場合は、pyenv which pip
およびpyenv which python
を使用します。
私の場合、$ PATHには~/.local/bin/
ディレクトリがあり、tmux内で実行したときに先頭に追加されていました。 ~/.local/bin/
にはpip
実行可能ファイルがありましたが、python
実行可能ファイルはありませんでした。したがって、私はpyenv
バージョンのPythonを使用しようとしましたが、~/.local/bin/pip
バージョンのpipです。
明確にするために編集:
which pip
とwhich python
が異なるパスを表示する場合、またはpyenvの場合、pyenv which pip
とpyenv which python
が異なるパスを表示する場合、それが問題である可能性があります。
ソリューションは環境に依存するため、1つのソリューションですべてに対応することは困難です。
多分あなたの$PATH
には~/.local/bin
before/usr/bin
があり、~/.local/bin
にはpip
実行可能ファイルがありますが、python
はありません実行可能。したがって、お使いのコンピュータは~/.local/bin
でpip
を検出していますが、/usr/bin
でpython
を検出しています。その場合、不要な場合は~/.local/bin
のpip
を削除できます。または、/usr/bin
のpipへのシンボリックリンクになるように更新することもできます(そこに別のpip
実行可能ファイルがあると仮定します)。または、~/.local/bin/python
のシンボリックリンクを/usr/bin/python
に追加することもできます。または、$PATH
を検索して/usr/bin
before~/.local/bin
を検索するように更新することもできます。
ソリューションは、環境、Pythonのインストール方法、使用するバージョンなどによって異なります。
この奇妙さは、PATHとpython/pipのバージョンの違いによって引き起こされる可能性があります。
これらのコマンドの出力をbashとzshの両方で確認することをお勧めします。
pip --version
python -m pip --version
pip2 --version
python2 -m pip --version
pip3 --version
python3 -m pip --version
@ Kusalananda が示唆するように、.bashrc
などの初期化ファイルも確認する必要があります。それは依存します... zsh/bash環境でset
の出力を比較する方が簡単な場合があります。その差分はおそらく巨大(1k行以上)なので、干し草の山から針を探すようなものです。欠落または変更された変数(PATHのように)およびPYTHONNOUSERSITE、PYTHONPATH、およびPIPで始まるもの、またはPIP(またはPY?)シェル関数(pip(){...}として)を含むものはカウントされる場合があります。