如果很容易在其他地方发现此问题,请致以歉意,但是尽管我发现有很多关于pyenv和Anaconda的文章,但没有一个专门解决此问题。但是,我经常是个白痴。
在Mac OSX(Mojave 10.14.6)上,我通过Homebrew安装了pyenv
brew install pyenv
我很高兴在Python版本之间安装并切换
pyenv install ...
和
pyenv global ...
我通常使用VS Code作为我的IDE。
我现在需要在Anaconda做一些工作。我以前没用过我可以简单地安装Anaconda via the distribution site并使用其导航器吗?当我需要旧版本的python使用pyenv和VS Code时,还是在安装Anaconda时会发生冲突?如果发生冲突,是否有在OSX上同时运行两者的途径?
我可以安装它,看看会发生什么,如果麻烦很大,可以从备份中恢复。但我希望pyenv / Anaconda大师可能有一些明智的建议,可以为我节省数小时的清理工作。
谢谢!
答案 0 :(得分:2)
存在冲突,导致pyenv
和conda
都默认尝试公开全局Python环境。
我一直在使用这些工具,而我发现的最佳解决方案是
pyenv
,使用pyenv global
设置的Python作为默认Python conda
,但不从中激活任何环境由于您的计算机上已安装pyenv
,因此只需要安装Anaconda。
brew cask install anaconda
初始化conda
,而不会暴露conda
的“基本”环境。
# init conda, the following command write scripts into your shell init file automatically
conda init
# disable init of env "base"
conda config --set auto_activate_base false
完成。
注意:完成此设置后,默认的Python是pyenv global
设置的Python。使用pyenv
和conda
分别管理环境。
管理虚拟环境的示例。
# virtual environments from pyenv
pyenv install 3.6.9
pyenv virtualenv 3.6.9 new-env
pyenv activate new-env
pyenv deactive
# You can also use `pyenv local`
# virtual environments from conda
conda create -n new-env python=3.6
conda env list
conda activate new-env
conda deactivate
pyenv
的默认环境位置为~/.pyenv/versions
。
conda
的默认环境位置,请检查conda info
的输出。
答案 1 :(得分:1)
对conda不太熟悉,但是我经常使用pyenv。
Pyenv有自己的virtualenv manager,您可以使用。您始终可以通过以下方式检查哪个virtualenv版本处于活动状态:
pyenv versions
您应该看到类似的内容:
system
20190814_125309
* 3.7.4 (set by /home/tzhuang/.pyenv/version)
3.7.4/envs/20190814_125309
3.7.4/envs/buildmaster-sandbox
3.7.4/envs/HEAD
3.7.4/envs/myenv
3.7.4/envs/sandbox
buildmaster-sandbox
HEAD
myenv
sandbox
*
表示当前处于活动状态的virtualenv(可以使用您提到的pyenv global进行设置)。您可以使用以下方法手动激活任何virtualenv:
pyenv shell
例如。
pyenv shell sandbox
然后运行pyenv versions
将给出:
system
20190814_125309
3.7.4 (set by /home/tzhuang/.pyenv/version)
3.7.4/envs/20190814_125309
3.7.4/envs/buildmaster-sandbox
3.7.4/envs/HEAD
3.7.4/envs/myenv
3.7.4/envs/sandbox
buildmaster-sandbox
HEAD
myenv
* sandbox
通常,将所需的任何软件包安装到新的virtualenv中而不是全局virtualenv中是一个好主意。如果遇到任何环境/依赖性问题,它可以更轻松地调试环境。