簡體   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