mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2025-11-08 11:33:55 -05:00
prefer pyvenv rather than virtualenv if --pyvenv is given
This commit is contained in:
@@ -67,14 +67,14 @@ abs_dirname() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
version() {
|
version() {
|
||||||
local version="$(pyenv-exec virtualenv --version 2>/dev/null || true)"
|
local version="$(virtualenv --version 2>/dev/null || true)"
|
||||||
echo "pyenv-virtualenv ${PYENV_VIRTUALENV_VERSION} (virtualenv ${version:-unknown})"
|
echo "pyenv-virtualenv ${PYENV_VIRTUALENV_VERSION} (virtualenv ${version:-unknown})"
|
||||||
}
|
}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
# We can remove the sed fallback once pyenv 0.2.0 is widely available.
|
# We can remove the sed fallback once pyenv 0.2.0 is widely available.
|
||||||
pyenv-help virtualenv 2>/dev/null || sed -ne '/^#/!q;s/.//;s/.//;1,4d;p' < "$0"
|
pyenv-help virtualenv 2>/dev/null || sed -ne '/^#/!q;s/.//;s/.//;1,4d;p' < "$0"
|
||||||
pyenv-exec virtualenv --help 2>/dev/null || true
|
virtualenv --help 2>/dev/null || true
|
||||||
[ -z "$1" ] || exit "$1"
|
[ -z "$1" ] || exit "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,6 +87,14 @@ require_executable() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtualenv() {
|
||||||
|
if [ -n "$PYVENV" ]; then
|
||||||
|
pyenv-exec pyvenv "$@"
|
||||||
|
else
|
||||||
|
pyenv-exec virtualenv "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
PYENV_VIRTUALENV_ROOT="$(abs_dirname "$0")/.."
|
PYENV_VIRTUALENV_ROOT="$(abs_dirname "$0")/.."
|
||||||
if [ -z "${PYENV_VIRTUALENV_CACHE_PATH}" ]; then
|
if [ -z "${PYENV_VIRTUALENV_CACHE_PATH}" ]; then
|
||||||
PYENV_VIRTUALENV_CACHE_PATH="${PYTHON_BUILD_CACHE_PATH:-${PYENV_ROOT}/cache}"
|
PYENV_VIRTUALENV_CACHE_PATH="${PYTHON_BUILD_CACHE_PATH:-${PYENV_ROOT}/cache}"
|
||||||
@@ -94,6 +102,7 @@ fi
|
|||||||
VIRTUALENV_OPTIONS=()
|
VIRTUALENV_OPTIONS=()
|
||||||
|
|
||||||
unset FORCE
|
unset FORCE
|
||||||
|
unset PYVENV
|
||||||
unset QUIET
|
unset QUIET
|
||||||
unset UPGRADE
|
unset UPGRADE
|
||||||
unset VERBOSE
|
unset VERBOSE
|
||||||
@@ -107,6 +116,9 @@ for option in "${OPTIONS[@]}"; do
|
|||||||
"h" | "help" )
|
"h" | "help" )
|
||||||
usage 0
|
usage 0
|
||||||
;;
|
;;
|
||||||
|
"pyvenv" )
|
||||||
|
PYVENV=true
|
||||||
|
;;
|
||||||
"q" | "quiet" )
|
"q" | "quiet" )
|
||||||
QUIET="--quiet"
|
QUIET="--quiet"
|
||||||
;;
|
;;
|
||||||
@@ -161,12 +173,23 @@ UPGRADE_LIST="${TMP}/pyenv-virtualenv.${SEED}.txt"
|
|||||||
|
|
||||||
VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME}"
|
VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME}"
|
||||||
|
|
||||||
require_executable "${VERSION_NAME}" "virtualenv" 2>/dev/null || {
|
if [ -n "$PYVENV" ]; then
|
||||||
require_executable "${VERSION_NAME}" "pip"
|
require_executable "${VERSION_NAME}" "pyvenv"
|
||||||
VIRTUALENV_VERSION="==${VIRTUALENV_VERSION}"
|
# Unset some arguments not supported by pyvenv
|
||||||
pyenv-exec pip install $QUIET $VERBOSE "virtualenv${VIRTUALENV_VERSION%==}"
|
unset QUIET
|
||||||
pyenv-rehash
|
unset VERBOSE
|
||||||
}
|
if [ -n "$UPGRADE" ]; then
|
||||||
|
unset UPGRADE
|
||||||
|
VIRTUALENV_OPTIONS[${#VIRTUALENV_OPTIONS[*]}]="--upgrade"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
require_executable "${VERSION_NAME}" "virtualenv" || {
|
||||||
|
require_executable "${VERSION_NAME}" "pip"
|
||||||
|
VIRTUALENV_VERSION="==${VIRTUALENV_VERSION}"
|
||||||
|
pyenv-exec pip install $QUIET $VERBOSE "virtualenv${VIRTUALENV_VERSION%==}"
|
||||||
|
pyenv-rehash
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
# Unset environment variables which starts with `VIRTUALENV_`.
|
# Unset environment variables which starts with `VIRTUALENV_`.
|
||||||
# These variables are reserved for virtualenv.
|
# These variables are reserved for virtualenv.
|
||||||
@@ -232,7 +255,7 @@ STATUS=0
|
|||||||
# change to cache directory to reuse them between invocation.
|
# change to cache directory to reuse them between invocation.
|
||||||
mkdir -p "${PYENV_VIRTUALENV_CACHE_PATH}"
|
mkdir -p "${PYENV_VIRTUALENV_CACHE_PATH}"
|
||||||
cd "${PYENV_VIRTUALENV_CACHE_PATH}"
|
cd "${PYENV_VIRTUALENV_CACHE_PATH}"
|
||||||
pyenv-exec virtualenv $QUIET $VERBOSE "${VIRTUALENV_OPTIONS[@]}" "${VIRTUALENV_PATH}" || STATUS="$?"
|
virtualenv $QUIET $VERBOSE "${VIRTUALENV_OPTIONS[@]}" "${VIRTUALENV_PATH}" || STATUS="$?"
|
||||||
|
|
||||||
# Create symlink of `python' bound for actual executable
|
# Create symlink of `python' bound for actual executable
|
||||||
# TODO: remove this if virtualenv doesn't really need this
|
# TODO: remove this if virtualenv doesn't really need this
|
||||||
|
|||||||
@@ -24,11 +24,17 @@ real_prefix() { # virtualenv
|
|||||||
PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;print(sys.real_prefix)' 2>/dev/null
|
PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;print(sys.real_prefix)' 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
base_prefix() { # pyvenv
|
||||||
|
# FIXME: non-pyvenv versions also have sys.base_prefix
|
||||||
|
local version="$1"
|
||||||
|
PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;print(sys.base_prefix)' 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
VIRTUALENV_PREFIX_PATHS=()
|
VIRTUALENV_PREFIX_PATHS=()
|
||||||
for version in "${versions[@]}"; do
|
for version in "${versions[@]}"; do
|
||||||
PREFIX="$(pyenv-prefix "${version}")"
|
PREFIX="$(pyenv-prefix "${version}")"
|
||||||
if [ -f "${PREFIX}/bin/activate" ]; then
|
if [ -f "${PREFIX}/bin/activate" ]; then
|
||||||
VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || true)"
|
VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || base_prefix "${version}" || true)"
|
||||||
if [ -d "${VIRTUALENV_PREFIX_PATH}" ]; then
|
if [ -d "${VIRTUALENV_PREFIX_PATH}" ]; then
|
||||||
VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "$VIRTUALENV_PREFIX_PATH")
|
VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "$VIRTUALENV_PREFIX_PATH")
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user