diff --git a/bin/pyenv-virtualenv b/bin/pyenv-virtualenv index 8255706..214bb79 100755 --- a/bin/pyenv-virtualenv +++ b/bin/pyenv-virtualenv @@ -166,6 +166,26 @@ install_pip() { } | PYENV_VERSION="${version}" pyenv-exec python } +ensurepip() { + local version="$1" + if PYENV_VERSION="${version}" pyenv-exec python -m ensurepip 2>/dev/null; then + local PREFIX_PATH="$(pyenv-prefix "${version}")" + if [ ! -e "${PREFIX_PATH}/bin/pip" ]; then + local pip="$(PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;v=sys.version_info;sys.stdout.write("pip%d.%d"%(v[0],v[1]))')" + if [ -e "${PREFIX_PATH}/bin/${pip}" ]; then + ( cd "${PREFIX_PATH}/bin" && ln -fs "${pip}" "pip" ) + fi + fi + else + PYENV_VERSION="${version}" pyenv-exec python -c "import setuptools" 1>/dev/null 2>&1 || { + install_setuptools "${version}" + } 1>&2 + PYENV_VERSION="${version}" pyenv-which pip 1>/dev/null 2>&1 || { + install_pip "${version}" + } 1>&2 + fi +} + PYENV_VIRTUALENV_ROOT="$(abs_dirname "$0")/.." if [ -z "${PYENV_VIRTUALENV_CACHE_PATH}" ]; then PYENV_VIRTUALENV_CACHE_PATH="${PYTHON_BUILD_CACHE_PATH:-${PYENV_ROOT}/cache}" @@ -324,16 +344,8 @@ STATUS=0 mkdir -p "${PYENV_VIRTUALENV_CACHE_PATH}" cd "${PYENV_VIRTUALENV_CACHE_PATH}" venv $QUIET $VERBOSE "${VIRTUALENV_OPTIONS[@]}" "${VIRTUALENV_PATH}" && { - if virtualenv_is_pyvenv; then - PYENV_VERSION="${VIRTUALENV_NAME}" pyenv-exec python -c 'import setuptools' 1>/dev/null 2>&1 || { - install_setuptools "${VIRTUALENV_NAME}" 1>&2 - } - - PYENV_VERSION="${VIRTUALENV_NAME}" pyenv-which pip 1>/dev/null 2>&1 || { - install_pip "${VIRTUALENV_NAME}" 1>&2 - } - fi -} || STATUS="$?" + virtualenv_is_pyvenv && ensurepip "${VIRTUALENV_NAME}" +} 1>&2 || STATUS="$?" ## Migrate previously installed packages from requirements.txt if [ -n "$UPGRADE" ]; then