![](/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.