1. 程式人生 > >Mac 下實現 pyenv/virtualenv 與 Anaconda 的兼容

Mac 下實現 pyenv/virtualenv 與 Anaconda 的兼容

bin https net var add spa nav 放置 找到

http://blog.csdn.net/vencent7/article/details/76849849

自己一直用的 pyenv 和 pyenv-virtualenv 管理不同的 python 環境。昨天朋友推薦我安裝一個 Anaconda(通過官網下載安裝帶有圖形界面Anaconda Navigator 的版本,並非通過 pyenv 安裝),結果安裝之後似乎與原來的 pyenv 不太兼容,在網上搜了一下,有遇到類似情況的:https://stackoverflow.com/questions/40944277/pyenv-and-anaconda-issue-with-export-path

經過嘗試,我找到的解決方案如下:

解決 PATH 環境變量的問題

anaconda 安裝的時候會在 .bash_profile最後一行把自己的 PATH 加到最前,正是因為這個原因導致 pyenv 失效了(pyenv 也是通過把自己的 PATH加到最前來“劫持”python等命令實現多版本的管理),因為按照官方的安裝說明,pyenv 的幾行命令應該放置在.bash_profile的最後

因此,編輯.bash_profile,使得 pyenv 的命令放置在 anaconda 的之後:

# added by Anaconda3 4.4.0 installer
export PATH="/Users/frederic/anaconda/bin:$PATH"

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

解決virtualenv識別不到anaconda的虛擬環境的問題

通過以上步驟,pyenv/virtualenv 的優先級已經比 anaconda 高了,因此如果你運行python -version看到的版本應該是通過 pyenv 指定的版本,而不是 anaconda 的版本。

然而,如何運行 anaconda 版本的 python 呢?

  1. 如果沒有創建過環境而只有默認的 root 的話,我們需要先通過conda 或者anaconda navigator圖形界面新建一個environment
  2. 把剛剛創建的 environment 文件夾軟鏈接到.pyenv/versions
    ,即讓 pyenv/virtualenv可以識別到 anaconda 創建的環境(如果是通過 pyenv 安裝的 anaconda 應該可以直接識別到,但是我的 anaconda 是獨立安裝的,因此 pyenv 沒有檢測到):ln -s ~/anaconda/envs/anaconda_env ~/.pyenv/versions/anaconda_env
  3. 現在輸入pyenv versions命令應該能看到 anaconda 的環境了,可以通過virtualenv的 activate/deactivate 命令或者 pyenv 的pyenv shell/local/glocal [env_name]命令切換版本

Mac 下實現 pyenv/virtualenv 與 Anaconda 的兼容