From 9c233132eb7d296613e26c40adae5f4be20b7cfa Mon Sep 17 00:00:00 2001 From: Luis Marsano Date: Wed, 9 Oct 2019 06:05:18 -0400 Subject: [PATCH 1/2] detect conda environments non-base conda environments lack bin/conda apply same solution as #290 --- bin/pyenv-virtualenv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/pyenv-virtualenv b/bin/pyenv-virtualenv index 01a0ffc6..52e1c9f3 100755 --- a/bin/pyenv-virtualenv +++ b/bin/pyenv-virtualenv @@ -139,7 +139,7 @@ detect_venv() { # Check the existence of executables as a workaround for the issue with pyenv-which-ext # https://github.com/yyuu/pyenv-virtualenv/issues/26 local prefix="$(pyenv-prefix)" - if [ -x "${prefix}/bin/conda" ]; then + if [ -d "${prefix}/conda-meta" ] || [ -x "${prefix}/bin/conda" ]; then HAS_CONDA=1 else if [ -x "${prefix}/bin/virtualenv" ]; then From a96eac5409ee43c7bf4e2e04eb8963cfaf5918ee Mon Sep 17 00:00:00 2001 From: Luis Marsano Date: Wed, 9 Oct 2019 06:09:34 -0400 Subject: [PATCH 2/2] clone non-base conda environments detect base conda by testing for `envs` directory create or clone accordingly --- bin/pyenv-virtualenv | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bin/pyenv-virtualenv b/bin/pyenv-virtualenv index 52e1c9f3..3d93f394 100755 --- a/bin/pyenv-virtualenv +++ b/bin/pyenv-virtualenv @@ -141,6 +141,9 @@ detect_venv() { local prefix="$(pyenv-prefix)" if [ -d "${prefix}/conda-meta" ] || [ -x "${prefix}/bin/conda" ]; then HAS_CONDA=1 + if [ -d "${prefix}/envs" ]; then + IS_BASE_CONDA=1 + fi else if [ -x "${prefix}/bin/virtualenv" ]; then HAS_VIRTUALENV=1 @@ -560,7 +563,11 @@ STATUS=0 mkdir -p "${PYENV_VIRTUALENV_CACHE_PATH}" cd "${PYENV_VIRTUALENV_CACHE_PATH}" if [ -n "${USE_CONDA}" ]; then - pyenv-exec conda create $QUIET $VERBOSE --name "${VIRTUALENV_PATH##*/}" --yes "${VIRTUALENV_OPTIONS[@]}" python || STATUS="$?" + if [ -n "${IS_BASE_CONDA}" ]; then + pyenv-exec conda create $QUIET $VERBOSE --name "${VIRTUALENV_PATH##*/}" --yes "${VIRTUALENV_OPTIONS[@]}" python || STATUS="$?" + else + pyenv-exec conda create $QUIET $VERBOSE --clone "${VERSION_NAME##*/}" --name "${VIRTUALENV_PATH##*/}" --yes "${VIRTUALENV_OPTIONS[@]}" || STATUS="$?" + fi else if [ -n "${USE_M_VENV}" ]; then pyenv-exec "${M_VENV_PYTHON_BIN:-python}" -m venv $QUIET $VERBOSE "${VIRTUALENV_OPTIONS[@]}" "${VIRTUALENV_PATH}" || STATUS="$?"