![](/img/trans.png)
[英]Why using Anaconda environments to install tensorflow on Windows?
[英]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
用作标准conda
和activate
命令的替换命令。 请注意变量名$CONDA_DEFAULT_ENV
是特殊的,由实际的conda
命令在内部使用。
使用此设置,我能够以与通常在 Anaconda 命令提示符下使用conda
和activate
相同的方式使用cyg-conda
和cyg-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)。 要解决此问题,有几个选项:
将以下内容添加到您的.bash_profile
或.bashrc
(如@patrickkelly 的答案中的脚本中所做的那样):
if [[ "${OSTYPE}" == 'cygwin' ]]; then set -o igncr export SHELLOPTS fi
使用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 的一种方法是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.