CodeLab技術ブログ

プログラミング技術まとめ

pyenv+anacondaでデフォルトの環境を変更する

pyenv+anacondaでpythonを導入したが、anacondaのデフォルトが3.7系だった。3.6を使いたいのだがいちいち環境を切り替えるのが面倒なので、どうしたらいいか悩んだ。

スポンサードリンク

anaconda 3.5系の話です。

試行錯誤

anaconda側で何とかしようと思ったのだが、情報が見つからなかった。
じゃ、pyenvで何とかできないかとおもって

# pyenv versions
  system
* anaconda3-5.3.1 (set by /home/User/.pyenv/version)
  anaconda3-5.3.1/envs/py36 

おお?インストール時に

pyenv global anaconda3-5.3.1

としていれていたけど、新たに作った環境もpyenvで認識してるんだ。
ということで

pyenv global anaconda3-5.3.1/envs/py36

として、pyenvでデフォルトを変更して、念のため再起動

#python -V
Python 3.7.1

うーん。だめっぽい。

そういえば、.bashrcに

export PATH="$PYENV_ROOT/versions/anaconda3-5.3.1/envs/py36/bin/:$PATH"

っていうパスがあったが、これを、作った環境のパスに変更したら?

スポンサードリンク
export PATH="$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH"

一応うまくいったぽいが・・・・

# python -V
Python 3.6.7 :: Anaconda, Inc.
# pyenv versions
  system
  anaconda3-5.3.1
* anaconda3-5.3.1/envs/py36
#conda info -e
pyenv: conda: command not found

The `conda' command exists in these Python versions:
  anaconda3-5.3.1

ですよねー。

解決

で、いろいろみてみたら、どうもanaconda4.4以降から仕様が変わったらしく、いままで
#source activate py36 をかやっていたのが、condaコマンドでやるようになったらしい。

試しにやってみたら、

# conda activate py36

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If your shell is Bash or a Bourne variant, enable conda for the current user with

    $ echo ". /home/user/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.sh" >> ~/.bashrc

or, for all users, enable conda with

    $ sudo ln -s /user/user/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.sh /etc/profile.d/conda.sh

The options above will permanently enable the 'conda' command, but they do NOT
put conda's base (root) environment on PATH.  To do so, run

    $ conda activate

in your terminal, or to put the base environment on PATH permanently, run

    $ echo "conda activate" >> ~/.bashrc

Previous to conda 4.4, the recommended way to activate conda was to modify PATH in
your ~/.bashrc file.  You should manually remove the line that looks like

    export PATH="/home/user/.pyenv/versions/anaconda3-5.3.1/bin:$PATH"

^^^ The above line should NO LONGER be in your ~/.bashrc file! ^^^

ということらしい。
conda.shとconda activateをbashrcで実行して、今まであったPATHの指定は消しなさいとあるので、その通りにやってみた。
bashrcで環境の選択をしているので、ここで環境も一緒に指定してあげればよくない?ということで。

echo "conda activate py36" >> ~/.bashrc

として再起動したらうまくいきました!

が、プロンプトに

(py36) [user@dev ~]$

って出てうざいんですよねぇ・・・。なんとかならんのかな?

bashrcのconda activateを消したら・・・
#python -V
Python 3.6.7 :: Anaconda, Inc.

あれ?うまくいった?

#pyenv versions
system
anaconda3-5.3.1
* anaconda3-5.3.1/envs/py36 (set by /home/user/.pyenv/version)

どうも、新方式にするとpyenv での変更がちゃんと通るようになるっぽいです。

ということで、ちゃんと公式マニュアルをみて導入しましょう・・ということですね(汗

スポンサードリンク

コメントは受け付けていません。