Mac 下实现 pyenv/virtualenv 与 Anaconda 的兼容

Posted 朝晖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac 下实现 pyenv/virtualenv 与 Anaconda 的兼容相关的知识,希望对你有一定的参考价值。

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 的兼容的主要内容,如果未能解决你的问题,请参考以下文章

mac pyenv+virtualenv 多python共存

MAC M1芯片安装python3.6环境

Python 多版本切换工具- Pyenv/Virtualenv 及 Anaconda 科学计算环境的配置

markdown pyenv + pyenv-virtualenv

pyenv、virtualenv、anaconda 有啥区别?

为啥我不能“停用”pyenv / virtualenv?如何“修复”安装