Ответ 1
После долгой борьбы с проблемой, я думаю, что я достиг разумного и работоспособного метода интеграции Anaconda python (и связанных с ним сред) в Cygwin. Предполагая, что Cygwin и Anaconda работают независимо друг от друга, чтобы получить доступ ко всем инструментам Anaconda от Cygwin, следующая настройка в .bash_profile
похоже, делает трюк. (Я включил только те части .bash_profile
относятся к интеграции... надеюсь, что я не пропустил что-то непреднамеренно.)
Эта настройка существенно делает три вещи. Во-первых, пользователю необходимо явно установить каталог $CONDA_BASE_DIR
как место, где была установлена базовая среда для conda/anaconda/miniconda. Во-вторых, существует функция в .bash_profile
для отслеживания текущей среды $CONDA_DEFAULT_ENV
с использованием переменной оболочки $CONDA_DEFAULT_ENV
. И, наконец, мы определяем псевдоним cyg-conda
и функцию cyg-activate
для использования в качестве команд замены для стандартной команды conda
и activate
. Обратите внимание, что имя переменной $CONDA_DEFAULT_ENV
является специальным и используется внутри самой командой conda
.
Используя эту настройку, я могу использовать cyg-conda
и cyg-activate
же, как я обычно использовал conda
и activate
в командной строке Anaconda, делая среду доступной для моей оболочки Cygwin bash.
Разумеется, он открыт для предложений по улучшению и т.д.
###############################################################################
# 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
###############################################################################