【问题标题】:conda activate and conda init fail to work in colab (as per June 2020)conda activate 和 conda init 无法在 colab 中工作(截至 2020 年 6 月)
【发布时间】:2020-10-17 23:21:22
【问题描述】:

此问题可能与 2018 年提出的问题重复: conda environment in google colab [google-colaboratory]

但答案对我不起作用。

我注意到在 2020 年 1 月的另一个问题中也提到了它, osmNX in Google Colab

并注意到数据科学堆栈上发布了相同的问题 - 但答案对我也不起作用: https://datascience.stackexchange.com/questions/75948/how-to-setup-and-run-conda-on-google-colab/75979#75979

所以我认为问题仍然有效。

如何在 Colab 中激活 conda 环境?

找不到锻炼的方法。

重现步骤:

  1. 安装 miniconda
!wget https://repo.continuum.io/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh
!bash Miniconda3-4.5.4-Linux-x86_64.sh -bfp /usr/local

注意警告:

...
installation finished.
WARNING:
    You currently have a PYTHONPATH environment variable set. This may cause
    unexpected behavior when running the Python interpreter in Miniconda3.
    For best results, please verify that your PYTHONPATH only points to
    directories of packages that are compatible with the Python interpreter
    in Miniconda3: /usr/local
  1. 更新和 bash 变量
%%bash
conda update conda -y -q
source /usr/local/etc/profile.d/conda.sh
conda init (or conda init bash if linux)

注意评论有更改效果:

no change     /usr/local/condabin/conda
no change     /usr/local/bin/conda
no change     /usr/local/bin/conda-env
no change     /usr/local/bin/activate
no change     /usr/local/bin/deactivate
no change     /usr/local/etc/profile.d/conda.sh
no change     /usr/local/etc/fish/conf.d/conda.fish
no change     /usr/local/shell/condabin/Conda.psm1
no change     /usr/local/shell/condabin/conda-hook.ps1
no change     /usr/local/lib/python3.7/site-packages/xontrib/conda.xsh
no change     /usr/local/etc/profile.d/conda.csh
modified      /root/.bashrc

==> For changes to take effect, close and re-open your current shell. <==
  1. 尝试使更改生效:
%%bash
exec bash

!source ~/.bashrc
  1. 安装环境:在我的情况下:

    !conda env create -f enviroment.yml

  2. 激活环境>不起作用!

    !conda activate myenv

注意评论:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

$ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.
  1. 所以我再试一次:
!conda init bash

!conda activate myenv

=> 没有效果

请注意以下几点:

%%bash
source activate myenv

现在我认为环境是激活的,但不是这样,因为python仍然没有指向conda env:

!which python
#/usr/local/bin/python 

这是我对答案的不同结果: https://datascience.stackexchange.com/a/75979

看到python指向的是默认的,而不是conda的:

%%bash
source activate myenv

python
import sys
# maybe only need this the first time we run this notebook
sys.path.append('/usr/local/lib/python3.6/site-packages')

print("Python version")
print(sys.version)

输出:

Python version
3.7.5 (default, Oct 25 2019, 15:51:11) 
[GCC 7.3.0]

另外请注意,使用source 激活已被弃用:

%%bash
source deactivate
#DeprecationWarning: 'source deactivate' is deprecated. Use 'conda deactivate'.

任何帮助表示赞赏。

附:对于 Google 人员 - 默认情况下在 Colab 中设置 conda(或从选定列表中选择)将不胜感激。

【问题讨论】:

    标签: python bash conda google-colaboratory miniconda


    【解决方案1】:

    这对我有用,但如果您在尝试后仍有问题,请告诉我:

    %%shell
    eval "$(conda shell.bash hook)" # copy conda command to shell
    conda activate myenv
    python --version
    conda deactivate
    

    【讨论】:

    • 嗨@rhurt,感谢您对此的回答。您的解决方案不会产生错误,但是,如果我这样做 import sys print("Python version") print(sys.version),我会看到 python 版本来自默认 Python 3.6.9 (default, Apr 18 2020, 01:56:04),而不是 conda 环境(myenv,在我的情况下应该是 3.7.5)。我也发现了这个-stackoverflow.com/questions/54429210/…-但解决方案%%bash conda config --set auto_activate_base false没有用:- P.s.我尝试了%%shell%%bash 命令..
    • 是的,问题是 conda 环境只在笔记本的那个单元格中被激活。如果你去另一个单元检查 python 版本,它会告诉你 VM 的版本,而不是虚拟环境。因此,您需要在运行 conda activate 的同一单元中运行要在虚拟环境中运行的所有命令。我刚刚在我的答案中添加了一个命令,它将打印环境的版本。由于您最初的问题是关于如何激活环境并且这回答了它,您可以通过单击左侧的检查来接受这个答案吗?
    • 嗨@rhurt,你的回答肯定很有用。但是让我更好地理解您的评论:需要在激活环境的同一单元格中运行所有命令。这将使工作流程变得非常不可能:如果我在下一个单元格中启动 python 脚本,将找不到依赖项。我是否因为在 colab 中使用 conda 环境而错过了 smtg?请注意在 Jupyter 中我可以选择环境,我的问题是关于 Colab。让我知道是否唯一可行的方法是安装在主 colab 中(激活其他 conda env 不可行..)
    • 是的,我理解的没错。很不幸,我猜这就是 conda 没有预装在 Google Colab 上的原因。最好的方法是将所有代码放入脚本中,并从同一个单元格中调用它们。
    猜你喜欢
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2020-12-06
    • 1970-01-01
    • 2019-04-22
    相关资源
    最近更新 更多