mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2025-11-18 16:45:35 -05:00
Compare commits
6 Commits
284b8f7ddb
...
85e513dc9f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85e513dc9f | ||
|
|
28cd9be54e | ||
|
|
d4c9655e26 | ||
|
|
999a0f2cbc | ||
|
|
a96eac5409 | ||
|
|
9c233132eb |
11
README.md
11
README.md
@@ -30,25 +30,25 @@ From inside that directory you can:
|
||||
|
||||
1. **Check out pyenv-virtualenv into plugin directory**
|
||||
|
||||
```sh
|
||||
```bash
|
||||
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
|
||||
```
|
||||
|
||||
For the Fish shell:
|
||||
|
||||
```sh
|
||||
```fish
|
||||
git clone https://github.com/pyenv/pyenv-virtualenv.git (pyenv root)/plugins/pyenv-virtualenv
|
||||
```
|
||||
|
||||
2. (OPTIONAL) **Add `pyenv virtualenv-init` to your shell** to enable auto-activation of virtualenvs. This is entirely optional but pretty useful. See "Activate virtualenv" below.
|
||||
|
||||
```sh
|
||||
```bash
|
||||
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
|
||||
```
|
||||
|
||||
**Fish shell note**: Add this to your `~/.config/fish/config.fish`
|
||||
|
||||
```sh
|
||||
```fish
|
||||
status --is-interactive; and pyenv virtualenv-init - | source
|
||||
```
|
||||
|
||||
@@ -56,7 +56,7 @@ From inside that directory you can:
|
||||
|
||||
3. **Restart your shell to enable pyenv-virtualenv**
|
||||
|
||||
```sh
|
||||
```bash
|
||||
exec "$SHELL"
|
||||
```
|
||||
|
||||
@@ -243,6 +243,7 @@ You can set certain environment variables to control pyenv-virtualenv.
|
||||
* `PIP_VERSION`, if set and `venv` is preferred
|
||||
over `virtualenv`, install the specified version of pip.
|
||||
* `PYENV_VIRTUALENV_VERBOSE_ACTIVATE`, if set, shows some verbose outputs on activation and deactivation
|
||||
* `PYENV_VIRTUALENV_PROMPT`, if set, allows users to customize how `pyenv-virtualenv` modifies their shell prompt. The default prompt ("(venv)") is overwritten with any user-specified text. Specify the location of the virtual environment name with the string `{venv}`. For example, the default prompt string would be `({venv})`.
|
||||
|
||||
## Version History
|
||||
|
||||
|
||||
@@ -262,9 +262,14 @@ EOS
|
||||
fi
|
||||
;;
|
||||
* )
|
||||
if [ -z "${PYENV_VIRTUALENV_PROMPT}" ]; then
|
||||
PYENV_VIRTUALENV_PROMPT="(${venv})"
|
||||
else
|
||||
PYENV_VIRTUALENV_PROMPT="${PYENV_VIRTUALENV_PROMPT/\{venv\}/${venv}}"
|
||||
fi
|
||||
cat <<EOS
|
||||
export _OLD_VIRTUAL_PS1="\${PS1:-}";
|
||||
export PS1="(${venv}) \${PS1:-}";
|
||||
export PS1="${PYENV_VIRTUALENV_PROMPT} \${PS1:-}";
|
||||
EOS
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -149,8 +149,11 @@ 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
|
||||
if [ -d "${prefix}/envs" ]; then
|
||||
IS_BASE_CONDA=1
|
||||
fi
|
||||
else
|
||||
if [ -x "${prefix}/bin/virtualenv" ]; then
|
||||
HAS_VIRTUALENV=1
|
||||
@@ -605,7 +608,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="$?"
|
||||
|
||||
@@ -15,6 +15,7 @@ setup() {
|
||||
unset PYENV_VIRTUALENV_DISABLE_PROMPT
|
||||
unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset PYENV_VIRTUALENV_PROMPT
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
stub pyenv-hooks "activate : echo"
|
||||
}
|
||||
@@ -44,6 +45,31 @@ EOS
|
||||
unstub pyenv-sh-deactivate
|
||||
}
|
||||
|
||||
@test "activate virtualenv from current version with custom prompt" {
|
||||
export PYENV_VIRTUALENV_INIT=1
|
||||
|
||||
stub pyenv-version-name "echo venv"
|
||||
stub pyenv-virtualenv-prefix "venv : echo \"${PYENV_ROOT}/versions/venv\""
|
||||
stub pyenv-prefix "venv : echo \"${PYENV_ROOT}/versions/venv\""
|
||||
stub pyenv-sh-deactivate "--force --quiet : echo deactivated"
|
||||
|
||||
PYENV_SHELL="bash" PYENV_VERSION="venv" PYENV_VIRTUALENV_PROMPT='venv:{venv}' run pyenv-sh-activate
|
||||
|
||||
assert_success
|
||||
assert_output <<EOS
|
||||
deactivated
|
||||
export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv";
|
||||
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv";
|
||||
export _OLD_VIRTUAL_PS1="\${PS1:-}";
|
||||
export PS1="venv:venv \${PS1:-}";
|
||||
EOS
|
||||
|
||||
unstub pyenv-version-name
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-prefix
|
||||
unstub pyenv-sh-deactivate
|
||||
}
|
||||
|
||||
@test "activate virtualenv from current version (quiet)" {
|
||||
export PYENV_VIRTUALENV_INIT=1
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ setup() {
|
||||
unset PYENV_VIRTUALENV_DISABLE_PROMPT
|
||||
unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset PYENV_VIRTUALENV_PROMPT
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
stub pyenv-hooks "activate : echo"
|
||||
}
|
||||
@@ -53,6 +54,35 @@ EOS
|
||||
teardown_conda "anaconda-2.3.0"
|
||||
}
|
||||
|
||||
@test "activate conda root from current version with custom prompt" {
|
||||
export PYENV_VIRTUALENV_INIT=1
|
||||
|
||||
setup_conda "anaconda-2.3.0"
|
||||
stub pyenv-version-name "echo anaconda-2.3.0"
|
||||
stub pyenv-virtualenv-prefix "anaconda-2.3.0 : echo \"${PYENV_ROOT}/versions/anaconda-2.3.0\""
|
||||
stub pyenv-prefix "anaconda-2.3.0 : echo \"${PYENV_ROOT}/versions/anaconda-2.3.0\""
|
||||
stub pyenv-sh-deactivate "--force --quiet : echo deactivated"
|
||||
|
||||
PYENV_SHELL="bash" PYENV_VERSION="anaconda-2.3.0" PYENV_VIRTUALENV_PROMPT='venv:{venv}' run pyenv-sh-activate
|
||||
|
||||
assert_success
|
||||
assert_output <<EOS
|
||||
deactivated
|
||||
export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/anaconda-2.3.0";
|
||||
export VIRTUAL_ENV="${PYENV_ROOT}/versions/anaconda-2.3.0";
|
||||
export CONDA_DEFAULT_ENV="root";
|
||||
export _OLD_VIRTUAL_PS1="\${PS1:-}";
|
||||
export PS1="venv:anaconda-2.3.0 \${PS1:-}";
|
||||
export CONDA_PREFIX="${TMP}/pyenv/versions/anaconda-2.3.0";
|
||||
EOS
|
||||
|
||||
unstub pyenv-version-name
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-prefix
|
||||
unstub pyenv-sh-deactivate
|
||||
teardown_conda "anaconda-2.3.0"
|
||||
}
|
||||
|
||||
@test "activate conda root from current version (fish)" {
|
||||
export PYENV_VIRTUALENV_INIT=1
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ setup() {
|
||||
export PYENV_ROOT="${TMP}/pyenv"
|
||||
export HOOK_PATH="${TMP}/i has hooks"
|
||||
mkdir -p "$HOOK_PATH"
|
||||
unset PYENV_VIRTUALENV_PROMPT
|
||||
}
|
||||
|
||||
@test "pyenv-virtualenv hooks" {
|
||||
|
||||
Reference in New Issue
Block a user