use*_*934 38 python macos homebrew anaconda
我刚买了一台带OSX Sierra的新Macbook,所以想确保我的开发环境设置正确.
我希望遵循这里提到的'最佳实践':https://github.com/nicolashery/mac-dev-setup
我需要Python 2.x用于工作(urllib,Pandas,Numpy,Scikit-learn)和Python 3.x用于一些在线课程(Pandas,Numpy,Django).我已经安装了Python 2和3,分别使用brew install python和brew install python3.
但是,在这个链接上,没有提到Anaconda,只有IPython.鉴于我已经通过Homebrew安装了Python 2和3,是否建议使用anaconda,或者我应该坚持上面Github链接中提到的标准IPython?阅读这篇文章后我很困惑:OS X - 在anaconda和自制Python环境之间做出决定
如果Brew和Anaconda确实可以一起工作,我可以采取哪些具体步骤来确保两个版本之间没有冲突?
The*_*ist 12
brew并且conda往往不能很好地一起玩,但我认为我有一个到目前为止对我来说效果很好的设置。它的灵感来自这篇文章。
您可以将以下代码添加到您的.zshrc:
# Deactivates conda before running brew.
# Re-activates conda if it was active upon completion.
brew() {
local conda_env="$CONDA_DEFAULT_ENV"
while [ "$CONDA_SHLVL" -gt 0 ]; do
conda deactivate
done
command brew $@
local brew_status=$?
[ -n "${conda_env:+x}" ] && conda activate "$conda_env"
return "$brew_status"
}
Run Code Online (Sandbox Code Playgroud)
您想conda在运行之前停用,brew以便在尝试安装某些东西时brew不会conda在您的包中找到包PATH。事实上,brew doctor如果您conda在运行 brew 之前没有停用,就会抱怨,如我在上面链接的帖子中所述。(另见这个问题。)
我应该提到的一件事是conda环境“堆栈”,但brew()我上面写的函数并没有跟踪您的环境堆栈。(有关此功能的跟踪版本,请参见下文。)例如,如果您conda activate newenv在conda环境oldenv处于活动状态时执行此操作,conda deactivate则将返回到oldenv。但是,如果您brew在激活后使用我在上面编写的函数oldenv然后newenv运行,则运行conda deactivate不会让您返回,oldenv而是会完全停用您的 conda 环境。
这个函数在运行时也可能会产生一些不必要的开销brew,因为我相信你只需要conda在运行时停用你的环境brew install。也就是说,如果你是那种足够关心开销的人,这个答案可能不会告诉你任何你不知道的事情。
最后一点,brew cask install anaconda我认为这不是一个好主意,因为它conda被设计为安装在 中$HOME,但brew cask想要将其安装在 中/usr/local,因此这可能导致不可预测的行为。
编辑:这是该brew函数的一个版本,它使您的 conda 环境保持原样:
brew() {
local -a conda_envs
while [ "$CONDA_SHLVL" -gt 0 ]; do
conda_envs=("$CONDA_DEFAULT_ENV" $conda_envs)
conda deactivate
done
command brew $@
local brew_status=$?
for env in $conda_envs; do
conda activate "$env"
done
unset env
return "$brew_status"
}
Run Code Online (Sandbox Code Playgroud)
我已经在 Zsh 中测试过了。我不认为它会在 Bash 中工作。如果你想在 Bash 中使用它,你需要将 for 循环声明更改为类似for env in ${conda_envs[@]}. 但是,我尚未对此进行测试,因此请在使用前测试它是否满足您的需求。
小智 2
您可以设置一个虚拟环境 (virtualenv) 并为每个环境分配不同版本的 Python,这样就不会出现任何重叠而导致依赖问题。
查看“Python 漫游指南”,了解如何完成设置。
http://docs.python-guide.org/en/latest/dev/virtualenvs/
| 归档时间: |
|
| 查看次数: |
32671 次 |
| 最近记录: |