【问题标题】:conda activate on Travis CI在 Travis CI 上激活 conda
【发布时间】:2019-03-25 16:15:24
【问题描述】:

我正在使用 conda 4.6.8 在 Travis CI 的 conda 环境中测试 python 包。我想在我的 Travis CI 配置中用新的 conda activate ENVNAME command 替换旧的 source activate ENVNAME 行。如果我在 Travis 上运行它:

>>> conda update -n base conda
>>> conda init
no change     /home/travis/miniconda/condabin/conda
no change     /home/travis/miniconda/bin/conda
no change     /home/travis/miniconda/bin/conda-env
no change     /home/travis/miniconda/bin/activate
no change     /home/travis/miniconda/bin/deactivate
no change     /home/travis/miniconda/etc/profile.d/conda.sh
no change     /home/travis/miniconda/etc/fish/conf.d/conda.fish
no change     /home/travis/miniconda/shell/condabin/Conda.psm1
no change     /home/travis/miniconda/shell/condabin/conda-hook.ps1
no change     /home/travis/miniconda/lib/python3.7/site-packages/xonsh/conda.xsh
no change     /home/travis/miniconda/etc/profile.d/conda.csh
modified      /home/travis/.bashrc
==> For changes to take effect, close and re-open your current shell. <==

如何在 Travis 上“关闭并重新打开”我的 shell?因为否则我无法激活我的 conda 环境:

>>> conda create -n TEST package_names
>>> conda activate TEST
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'.
The command "conda activate TEST" failed and exited with 1 during .
Your build has been stopped.

【问题讨论】:

    标签: bash shell anaconda travis-ci conda


    【解决方案1】:

    不确定目前是否支持官方文档still uses source in travis.yml

    conda init 是做什么的?

    这个新命令应该协调用户设置他们的 shell 的方式,以便能够调用conda activate

    实际上,如果您运行 conda init --dry-run --verbose,您会看到它会尝试从您的 ~/.bashrc 获取 conda.sh(假设您正在运行 Bash,来自您问题中提到的信息)。

    conda.sh 将定义一个conda() 函数,该函数将捕获一些命令,其中activatedeactivate 并调度到$CONDA_EXE

    conda() {
        if [ "$#" -lt 1 ]; then
            "$CONDA_EXE"
        else
            \local cmd="$1"
            shift
            case "$cmd" in
                activate|deactivate)
                    __conda_activate "$cmd" "$@"
                    ;;
                install|update|upgrade|remove|uninstall)
                    "$CONDA_EXE" "$cmd" "$@" && __conda_reactivate
                    ;;
                *) "$CONDA_EXE" "$cmd" "$@" ;;
            esac
        fi
    }
    

    因此,除非在本地 shell 中定义了此函数,否则您将无法调用 conda activate

    提示解决方案? (未针对 Travis CI 进行测试

    我可以建议的唯一提示是尝试source $(conda info --root)/etc/profile.d/conda.sh,然后尝试conda activate。这应该与conda init 大致相同假设您使用的是 Bourne shell 衍生物

    对于csh,有$(conda info --root)/etc/profile.d/conda.csh,对于fish,有$(conda info --root)/etc/fish/conf.d/conda.fish

    注意:虽然未针对 Travis CI 进行测试,但此解决方案适用于我的 bash。当然,conda 可执行文件应该在PATH 中找到,以便conda info --root 正常工作。

    【讨论】:

    • 更新:从 conda 4.6(可能更早)开始,官方文档已移至 conda activate。他们仍然使用conda init,而是直接采购脚本,如this answer。
    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2019-08-03
    相关资源
    最近更新 更多