venvでactivateしたのに/usr/bin/pythonのpythonを参照してしまうという事象が発生しました。
このままpip installをすると仮想環境内にライブラリがインストールされず、システム側のPython環境がゴチャゴチャになってしまいました。
理由
venvで作成したフォルダを移動したからのようです。
activateファイルの中にパスが指定してあり、フォルダを移動したことにより正しくactivate出来ていないようです。
(test-venv) hinomaruc@myMBP ~ % grep VIRTUAL_ENV test-venv/bin/activate
Out[0]
unset VIRTUAL_ENV VIRTUAL_ENV="/Users/hinomaruc/test-venv" export VIRTUAL_ENV PATH="$VIRTUAL_ENV/bin:$PATH" if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then if [ "basename \"$VIRTUAL_ENV\"
" = "__" ] ; then PS1="[basename \
dirname \"$VIRTUAL_ENV\"\``] $PS1" PS1="(basename \"$VIRTUAL_ENV\"
)$PS1"
再現
現在のディレクトリの確認
hinomaruc@myMBP ~ % pwd
Out[0]
/Users/hinomaruc
test-venvという仮想環境を作成
python3 -m venv test-venv
test-venvフォルダ移動前の動作確認
仮想環境をactivateする
hinomaruc@myMBP ~ % source /Users/hinomaruc/test-venv/bin/activate
pythonコマンドのpathを確認
(test-venv) hinomaruc@myMBP ~ % which python
Out[0]
/Users/hinomaruc/test-venv/bin/python
仮想環境内のpythonコマンドを参照しています。
python3コマンドのpathを確認
(test-venv) hinomaruc@myMBP ~ % which python3
Out[0]
/Users/hinomaruc/test-venv/bin/python3
仮想環境内のpython3コマンドを参照しています。
pipでインストールされているライブラリの確認
(test-venv) hinomaruc@myMBP ~ % python3 -m pip freeze
Out[0]
結果なし
何もインストールされていませんでした。
test-venvフォルダ移動後の動作確認
test-venvフォルダをPublicフォルダ以下に移動します
mv test-venv Public
source /Users/hinomaruc/Public/test-venv/bin/activate
作成済みの仮想環境を移動した場合どうなるのか確認してみます。
(test-venv) hinomaruc@myMBP ~ % which python
Out[0]
/usr/bin/python
pythonのパスが/usr/bin/pythonを指しています。
(test-venv) hinomaruc@myMBP ~ % which python3
Out[0]
/usr/bin/python3
pythonのパスが/usr/bin/python3を指しています。
(test-venv) hinomaruc@myMBP ~ % python3 -m pip freeze
Out[0]
six==1.15.0
なぜかsixだけインストールしていたようです。
フォルダを移動すると挙動が変わりました。
解決法
- venvで仮想環境を作成したフォルダに戻す
Publicフォルダ以下に移動したtest-venvフォルダを1つ前のフォルダ階層(/Users/hinomaruc以下)に戻せば元どおりです。
- activateファイルに記載されているパスを修正する
下記情報を参考にしました。
"venv activate" doesn't not change my Python path
I create a virtual environment (test_venv) and I activate it. So far, successful.HOWEVER, the path of the Python Interpr...
activateファイル一覧の表示
ls -la test-venv/bin/ | grep activate
Out[0]
> -rw-r--r-- 1 hinomaruc staff 2216 12 3 09:39 activate -rw-r--r-- 1 hinomaruc staff 1268 12 3 09:39 activate.csh -rw-r--r-- 1 hinomaruc staff 2420 12 3 09:39 activate.fish