@nakanushi23

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

anacondaでRdkitをインストールした後、pyenvでバージョンが切り替わらない。

発生した問題

anacondaでRdkitをインストールした後、、pyenvでバージョンが切り替わりません。。。

環境

=============
MacOS catalina 10.15.7
=============

プログラミング初心者です。初めての質問になりますのでどうかお手柔らかによろしくお願いいたします。。

今回行った操作の流れ

こちらのサイト( https://magattaca.hatenablog.com/entry/2019/11/02/180551
を参考にRdkitのインストールを試みました。

pyenvにてインストールしたanaconda3-2020.07を用いて

# pythonのバージョンを指定して RDKitをインストール
% conda create -c rdkit -n my-rdkit-env python=3.6.12 rdkit

とし、Rdkitのインストール及びanacondaによる仮想環境を構築を行いました。

続いて

# 新しく作ったconda 環境(my-rdkit-env)をアクティベート
% conda activate my-rdkit-env
% python3 -V

を実行したところ,

Python 3.6.12 :: Anaconda, Inc.

が正常に返ってきました。

さて、ここからが問題なのですが、、

# conda 環境(my-rdkit-env)から抜ける。
% conda deactivate
% pyenv global 3.7.8
% pyenv versions

#  system
  3.6.1
  3.6.12
* 3.7.8 (set by /Users/XXX/.pyenv/version)
  3.9.5
  anaconda3-2020.07
  anaconda3-2020.07/envs/my-rdkit-env

% python3 -V
# Python 3.8.3

となり、pyenvでいつも通りのバージョンの切り替えができず、インストールした覚えのないバージョン3.8.3になってしまいました。
この時、pythonのパスを確認すると

/Users/XXX/.pyenv/versions/anaconda3-2020.07/bin/python

となっており、用いるpythonのバージョンが今回インストールしたanaconda経由で参照されていることがおそらく問題になっているのではないかと考えました。

そこで /.Bash_profile や /.zshrc などをいじくり回したりしてみたのですが、初心者すぎて何をすればいいかわかりませんでした。。。

これからどうすれば、pyenvでpythonのバージョンが選べるようになるでしょうか???

なお、pyenv経由でanacondaをインストールする前は、正常にpyenv global 'version'で切り替えができていました。実際、anacondaをアンインストールした後、/.bash_profileと/.zshrcのanacondaに関係ある部分を全て消すとまた正常にpyenvでバージョンの切り替えが可能でした。

参考までに以下、現在の/.bash_profileと/.zshrcの関係ありそうな部分のコピーを貼っています。

本当に初心者で何を貼ればいいか分からないため、追記して欲しい情報がありましたらお気軽にお申し付けください。
ご回答よろしくお願いします。

[bash_profile]

# . /Users/XXX/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.sh  # commented out by conda initialize
# conda activate  # commented out by conda initialize


# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/XXX/.pyenv/versions/anaconda3-2020.07/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/XXX/.pyenv/versions/anaconda3-2020.07/etc/profile.d/conda.sh" ]; then
        . "/Users/XXX/.pyenv/versions/anaconda3-2020.07/etc/profile.d/conda.sh"
    else
        export PATH="/Users/XXX/.pyenv/versions/anaconda3-2020.07/bin:$PATH"
    fi
fi

[zshrc]

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
export RDBASE=/usr/local/share/RDKit

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/XXX/.pyenv/versions/anaconda3-2020.07/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/XXX/.pyenv/versions/anaconda3-2020.07/etc/profile.d/conda.sh" ]; then
        . "/Users/XXX/.pyenv/versions/anaconda3-2020.07/etc/profile.d/conda.sh"
    else
        export PATH="/Users/XXX/.pyenv/versions/anaconda3-2020.07/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
0 likes

1Answer

環境変数PATHを以下のコマンドで出力し、確認してみてください。

echo $PATH

出力される文字列の中で、/Users/XXX/.pyenv/versions/anaconda3-2020.07/bin/Users/XXX/.pyenv/shimsよりも先に来ていると思います。前者は.bash_profileや.zshrcで設定しているパス(export PATH=...の行が相当)で、後者はeval "$(pyenv init -)"の結果として設定されるパスです。pyenvが管理するpythonが、後者のディレクトリに含まれます。

python3 -Vを実行したとき、変数PATHに記載されたディレクトリについて、先頭から順にpython3という実行ファイルがないか探します。その結果、/Users/XXX/.pyenv/versions/anaconda3-2020.07/binpython3が見つかるので、このファイルが実行されているのだと予想します。

解決策としては、環境変数PATHにて/Users/XXX/.pyenv/shims/Users/XXX/.pyenv/versions/anaconda3-2020.07/binよりも先に存在すれば良いです。単純に修正するなら、.bash_profileあるいは.zshrcにて、pyenv関連の設定をcondaの設定よりも後に記載すれば良いです。ただ、condaの設定は不要で、消してしまうのが良いように思えます。このcondaの設定が無くても、pyenvでanaconda3-2020.07を使うように設定されていれば、condaコマンドが使えるのではないでしょうか?

0Like

Comments

  1. @nakanushi23

    Questioner

    mamo3gr様
    ご回答ありがとうございます。.zshrcや.bash_profileの書き込み順にも意味があることを恥かしながら今知りました。
    echo $PATHを実行したところおっしゃられた通りのことが記載してありましたので、pyenv関連の設定をanaconda関連の設定より後に記載するように設定しました。しかし、残念ながら問題の解決には至りませんでした(echo $PATHの結果も入れ替え前と同じ状態でした)。また、anaconda関連の記載を完全に.zshrcから完全に消すことも試みましたが、その状態ではcondaコマンドを使用できず、'cond init'を実行しろと出てきてしまいました。

    そこで、こちらのサイト( http://www.soudegesu.com/python/pyenv/anaconda/ )の手順通りに、pyenv-vertualenvを導入してみたところ、問題が解決しpyenvによってpythonのバージョン切り替え及びアナココンダ仮想環境の使用が可能になりました。

    お騒がせしましたがとりあえず何かまた問題が起こるまではこの環境構築法でやってみたいと思います。大変勉強になりました、ご回答ありがとうございました!

Your answer might help someone💌