繁体   English   中英

在 windows 上使用带有 cygwin 的 anaconda 环境

[英]Using anaconda environments with cygwin on windows

尝试通过 Windows NT 上的 cygwin 界面使用 anaconda 设置环境,但失败了。

创建环境( conda create -n test_env )工作正常。 但是activate test_env失败。

我尝试用以下方法破解它:

export PATH=/cygdrive/c/users/nick/anaconda3/envs/test:$PATH

这修复了一些行为( which python指向正确的 python)。 但是,如果我执行“conda install”命令,它会安装到 anaconda 根目录中,而不是环境中。 也许导出是 bash 会话的本地导出,而 conda 调用了不同版本的 PATH? 有没有办法让 PATH 的修改成为全局的?

在与这个问题搏斗了一段时间之后,我认为我已经找到了一种合理可行的方法来将 Anaconda 的 python(和相关环境)集成到 Cygwin 中。 假设您让 Cygwin 和 Anaconda 独立工作,要从 Cygwin 访问所有 Anaconda 工具, .bash_profile的以下设置似乎可以解决问题。 (我只包含了与集成相关的.bash_profile那些部分......希望我没有无意中错过一些东西。)

这个设置基本上做了三件事。 首先,用户需要将目录$CONDA_BASE_DIR显式设置$CONDA_BASE_DIR /anaconda/miniconda 的基本环境的安装位置。 其次, .bash_profile有一个功能可以使用 shell 变量$CONDA_DEFAULT_ENV跟踪当前的 conda 环境。 最后,我们定义别名cyg-conda和函数cyg-activate用作标准condaactivate命令的替换命令。 请注意变量名$CONDA_DEFAULT_ENV是特殊的,由实际的conda命令在内部使用。

使用此设置,我能够以与通常在 Anaconda 命令提示符下使用condaactivate相同的方式使用cyg-condacyg-activate ,同时使环境可用于我的 Cygwin bash shell。

当然愿意接受改进建议等。

###############################################################################

#  Anaconda Environment Selection - Plese set CONDA_BASE_DIR to the directory
#  containing the base installation of anaconda/miniconda.

export CONDA_BASE_DIR=/cygdrive/c/Users/Patrick/Miniconda3

#  Proxy Servers & Network Setup (if needed)

export HTTP_PROXY=
export HTTPS_PROXY=

#  IMPORTANT - Ignore carriage returns when using a Cygwin environment.

export SHELLOPTS
set -o igncr

###############################################################################

#  Manage conda environments for Python.  We check the environment variable
#  $CONDA_DEFAULT_ENV to see which environment is desired.  The default (root)
#  environment will be chosen if nothing is specified.  Note that this variable
#  will be explicitly managed by the cyg-activate ( ) function we have defined
#  below, specifically for the purpose of changing environments.  The root
#  environment is also handled slightly different from the others when it comes
#  to setting the CONDA_DEFAULT_ENV variable.

if [ ${CONDA_DEFAULT_ENV} ] && [ ${CONDA_DEFAULT_ENV} != 'root' ] 
then
    #  SELECT ONE OF THE NON-DEFAULT ENVIRONMENTS
    export CONDA_PREFIX=${CONDA_BASE_DIR}/envs/${CONDA_DEFAULT_ENV}
else
    #  SELECT THE DEFAULT ENVIRONMENT (and set CONDA_DEFAULT_ENV full path)
    export CONDA_DEFAULT_ENV=root
    export CONDA_PREFIX=${CONDA_BASE_DIR}
fi

###############################################################################

#  Define cyg-conda and cyg-activate to facilitate management of conda.

alias cyg-conda=${CONDA_BASE_DIR}/Scripts/conda.exe

cyg-activate() {
    export CONDA_DEFAULT_ENV=$1
    source ~/.bash_profile
    cyg-conda info --envs
}

###############################################################################

#  PATH - ALl of the anaconda/miniconda path entries appear first.

PATH=
PATH=$PATH:$CONDA_PREFIX
PATH=$PATH:$CONDA_PREFIX/Library/mingw-w64/bin
PATH=$PATH:$CONDA_PREFIX/Library/usr/bin
PATH=$PATH:$CONDA_PREFIX/Library/bin
PATH=$PATH:$CONDA_PREFIX/Scripts
PATH=$PATH:$HOME/scripts
PATH=$PATH:$HOME/local/bin
PATH=$PATH:/usr/local/bin
PATH=$PATH:/usr/bin

export PATH

###############################################################################

conda 4.4 开始,cygwin 支持使用以下语法激活和停用命令(链接的文档还提供了将 conda 添加到PATH最佳实践,值得一试):

conda activate <name-of-environment-to-activate>
conda deactivate

但是,有一个错误会阻止它们开箱即用,即 cygwin 使用的 bash 脚本都具有 Windows 行尾(CRLF)。 要解决此问题,有几个选项:

  1. 将以下内容添加到您的.bash_profile.bashrc (如@patrickkelly 的答案中的脚本中所做的那样):

     if [[ "${OSTYPE}" == 'cygwin' ]]; then set -o igncr export SHELLOPTS fi
  2. 使用dos2unix类的工具将相关文件的行尾更改为 Unix 样式 (LF)。 以下文件位于安装 conda 的目录中,必须进行转换,可能还有其他文件:

    • etc/profile.d/conda.sh
    • Scripts/activate
    • Scripts/deactivate


    更新:当 conda 更新自身时,上述文件至少有时会被覆盖,恢复 CRLF 行结尾,因此在这些情况下必须重复将它们转换为 LF 的过程。

由于 Cygwin 模拟 linux 环境,我们需要使用“source activate test_env”而不是“activate test_env”。

使用 env conda 激活和 cygwin 的一种方法是:

  • 打开cmd:Win+R并写入cmd
  • 激活畅达:畅达激活环境
  • 打开cygwin:cygwin(对于这个cygwin必须添加到PATH中)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM