問題描述
我一直在使用 virtualenv,然后我還安裝了 anaconda.剛才我嘗試使用source activate helloworld
之類的anaconda方式激活虛擬環境.(事實上??,我不記得這是否正是我輸入的命令).然后環境就被激活了.但是當我嘗試運行筆記本時,有人說即使我已經在那個環境中安裝了一些庫也不存在.直到那時我才意識到我激活了錯誤的環境.然后我關閉選項卡和 cd
到 hellowworld
并執行 source bin/activate
.但是為時已晚.我把它作為輸出 prepending/home/lcc/anaconda3/envs/bin 到 PATH
并且環境未按預期激活.你知道如何解決這個問題嗎?謝謝!
I was using virtualenv all the time and then I had also installed anaconda. Just now I tried to activate a virtual environment using the way of anaconda like source activate helloworld
. (Indeed I don't remember if this is exactly the command I typed in). And then the environment had been activated. But when I tried to run the notebook, it was said that some libraries didn't exist even if I had installed them already in that environment. Not until then did I realize I had activated the wrong environment. And then I close the tab and cd
to hellowworld
and did source bin/activate
. But it was too late. I got this as the output prepending /home/lcc/anaconda3/envs/bin to PATH
and the environment was not activated expectedly. Do you know how to solve this issue? Thanks!
這里是/hello/world
下activate
文件的完整內容:
Here is the full content of the activate
file under /hello/world
:
#!/bin/bash
# Determine the directory containing this script
if [[ -n $BASH_VERSION ]]; then
_SCRIPT_LOCATION=${BASH_SOURCE[0]}
SHELL="bash"
elif [[ -n $ZSH_VERSION ]]; then
_SCRIPT_LOCATION=${funcstack[1]}
SHELL="zsh"
else
echo "Only bash and zsh are supported"
return 1
fi
_CONDA_DIR=$(dirname "$_SCRIPT_LOCATION")
if [ $# -gt 1 ]; then
(>&2 echo "Error: did not expect more than one argument.")
(>&2 echo " (Got $@)")
return 1
fi
case "$(uname -s)" in
CYGWIN*|MINGW32*|MSYS*)
EXT=".exe"
;;
*)
EXT=""
;;
esac
# Export whatever PS setting we have, so it is available to Python subprocesses
export PS1
# Ensure that this script is sourced, not executed
# Also note that errors are ignored as `activate foo` doesn't generate a bad
# value for $0 which would cause errors.
if [[ -n $BASH_VERSION ]] && [[ "$(basename "$0" 2> /dev/null)" == "activate" ]]; then
(>&2 echo "Error: activate must be sourced. Run 'source activate envname'
instead of 'activate envname'.
")
"$_CONDA_DIR/conda" ..activate $SHELL$EXT -h
exit 1
fi
"$_CONDA_DIR/conda" ..checkenv $SHELL$EXT "$@"
if (( $? != 0 )); then
return 1
fi
# Ensure we deactivate any scripts from the old env
# Note: this empties $@. Preserve a copy.
args=$@
source "$_CONDA_DIR/deactivate"
_NEW_PATH=$("$_CONDA_DIR/conda" ..activate $SHELL$EXT "$args")
if (( $? == 0 )); then
export CONDA_PATH_BACKUP="$PATH"
# export this to restore it upon deactivation
export CONDA_OLD_PS1=$PS1
export PATH="$_NEW_PATH"
# Get first path (should be full path prefix of our env)
# inner string extraction pulls off first path
# outer string removes /bin if present (on Unix)
firstpath=${PATH%%:*}
export CONDA_DEFAULT_ENV="$(echo ${firstpath} | sed "s|/bin$||")" &>/dev/null
# Legacy support: CONDA_DEFAULT_ENV used to be either env name or full path if given as path.
# CONDA_DEFAULT_ENV is now always full path.
# Keep CONDA_ENV_PATH around, and have it mirror CONDA_DEFAULT_ENV.
# Last date of change: 2016-04-18
export CONDA_ENV_PATH=$CONDA_DEFAULT_ENV
export PS1="$( "$_CONDA_DIR/conda" ..setps1 $SHELL$EXT "$args" )"
# Load any of the scripts found $PREFIX/etc/conda/activate.d AFTER activation
_CONDA_D="${CONDA_DEFAULT_ENV}/etc/conda/activate.d"
if [[ -d "$_CONDA_D" ]]; then
IFS=$(echo -en "
")&>/dev/null && for f in $(find "$_CONDA_D" -iname "*.sh"); do source "$f"; done
fi
else
return $?
fi
if [[ -n $BASH_VERSION ]]; then
hash -r
elif [[ -n $ZSH_VERSION ]]; then
rehash
else
echo "Only bash and zsh are supported"
return 1
fi
推薦答案
從您的問題中不清楚您希望激活"做什么.是激活 virtualenv,還是激活 conda 環境.
It's not clear from your question what you expect "activate" to do. Is it activating a virtualenv, or is it activating a conda environment.
安裝 miniconda 或 anaconda 時,您可以選擇將其添加到 PATH.如果你這樣做,那么它可能總是出現在你的 virtualenv 激活腳本之前.您可以重命名一個或另一個,或為 virtualenv 創建一個別名,該別名使用激活腳本的絕對路徑調用它.您也可以移動 Anaconda,使其附加而不是前置,但將始終使用 virtualenv activate 而不是 conda(絕對路徑除外).
When you install miniconda or anaconda, you are given an option to add it to PATH. If you do so, then it probably always comes before your virtualenv activate script. You can rename one or the other, or create an alias to the virtualenv one that calls it with an absolute path to the activate script. You can also move Anaconda so that it's appended rather than prepended, but then the virtualenv activate will always be used rather than the conda one (barring absolute paths).
要附加 conda 的路徑,請查看 ~/.bashrc 或 ~/.bash_profile 并更改
To append conda's path, look in ~/.bashrc or ~/.bash_profile and change
export PATH=<anaconda path>:$PATH
到
export PATH=$PATH:<anaconda path>
這篇關于如何解決anaconda和virtualenv沖突的問題的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!