Python 在windows上使用带有cygwin的anaconda环境
试图通过Windows NT上的cygwin界面使用anaconda设置环境,但失败 创建环境(Python 在windows上使用带有cygwin的anaconda环境,python,windows,cygwin,anaconda,Python,Windows,Cygwin,Anaconda,试图通过Windows NT上的cygwin界面使用anaconda设置环境,但失败 创建环境(conda create-n test_env)工作正常。但是激活测试环境失败 我试着用: export PATH=/cygdrive/c/users/nick/anaconda3/envs/test:$PATH 这修复了一些行为(哪个python指向正确的python)。但是如果我随后执行“conda install”命令,它将安装到根anaconda目录中,而不是安装到环境中。也许导出是bash
conda create-n test_env
)工作正常。但是激活测试环境
失败
我试着用:
export PATH=/cygdrive/c/users/nick/anaconda3/envs/test:$PATH
这修复了一些行为(
哪个python
指向正确的python)。但是如果我随后执行“conda install”命令,它将安装到根anaconda目录中,而不是安装到环境中。也许导出是bash会话的本地,conda调用了不同版本的PATH?有没有办法使PATH的修改成为全局的?由于Cygwin模拟linux环境,我们需要使用“源代码激活测试环境”而不是“激活测试环境”。经过一段时间的努力,我认为我已经找到了一种合理可行的方法来集成Anaconda的python(以及相关环境)塞格温。假设Cygwin和Anaconda都独立工作,要从Cygwin访问所有Anaconda工具,下面在.bash\u profile
中的设置似乎可以做到这一点。(我只包括了与集成相关的.bash_profile
部分……希望我没有无意中遗漏一些内容。)
这个设置基本上做了三件事。首先,用户需要明确地将目录$CONDA_BASE_DIR
设置为安装CONDA/anaconda/miniconda基本环境的位置。其次,.bash\u profile
中有一个功能,可以使用shell变量$conda\u DEFAULT\u ENV
跟踪当前的conda环境。最后,我们定义了一个别名cyg-conda
和一个函数cyg-activate
,用作标准conda
和activate
命令的替换命令。请注意,变量名$CONDA_DEFAULT_ENV
是特殊的,由实际的CONDA
命令在内部使用
使用此设置,我可以使用cyg-conda
和cyg-activate
,就像我通常在Anaconda命令提示符下使用conda
和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
###############################################################################
截至目前,cygwin支持以下语法的激活和停用命令(链接文档还提供了将conda添加到路径
的最佳实践,值得查看):
conda激活
康达酒店
然而,有一个因素阻止了这些操作的开箱即cygwin使用的bash脚本都有Windows行结尾(CRLF)。要解决此问题,有两个选项:
.bash\u配置文件
或.bashrc
(如@patrickkelly答案中的脚本所示):
if[[“${OSTYPE}”=='cygwin']];然后
设置-o点火开关
出口贝壳
fi
etc/profile.d/conda.sh
脚本/激活
脚本/停用
更新:当康达更新自身时,上述文件至少在某些时候被覆盖,恢复CRLF行结尾,因此在这些情况下必须重复将其转换为LF的过程
使用激活的环境conda和cygwin的一种方法是:
- 打开cmd:Win+R并写入cmd
- 激活康达:康达激活环境
- 打开cygwin:cygwin(对于此cygwin,必须将其添加到路径)
bash:/usr/bin/conda:没有设置这样的文件或目录
——如果我正在运行ZSH,则需要输入igncr?要使此集成工作,需要记住一些事情。(i) 请直接从安装程序安装Anaconda,而不是像Chocolate这样从软件包管理器安装Anaconda,因为这种方法必须在Anaconda根目录下才能工作。(ii)为了让anaconda python在cygwin命令行中工作,必须使用python-i
。只需使用python
即可冻结屏幕。为了让事情更清楚,您需要source
此脚本(手动或在.bashrc中),然后运行cyg activate
然后source activate
您的环境项1。这个答案解决了我所有的Anaconda/Cygwin问题。似乎有许多以dos行结尾的脚本。即使在我执行“conda init bash”时,我的.bash_配置文件也会在添加“eval”命令后自动转换为dos,从而中断bash启动。请参见最近的miniconda(4.7.10)对我有效。以前我有过不少Cygwin的烦恼,但值得注意的是,仅仅设置igncr
似乎就解决了所有问题。我认为自上次尝试以来,其他一些小错误已经修复。当使用建议#1时,conda activate
不会激活环境,但source activate
会激活