mirror of
https://github.com/pyenv/pyenv.git
synced 2025-11-09 12:03:49 -05:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a5a21ee05 | ||
|
|
ae29f86968 | ||
|
|
f7754ae6a4 | ||
|
|
673c73012d | ||
|
|
20df064204 | ||
|
|
1cce1cadbd | ||
|
|
fc83d32317 | ||
|
|
cb0402214e | ||
|
|
35e0b0e24a | ||
|
|
57f1c3b5b4 | ||
|
|
637fd914dc | ||
|
|
d2bd4c06ef | ||
|
|
5f75198569 | ||
|
|
bbcecc7561 | ||
|
|
e154693dc6 | ||
|
|
1706436fae | ||
|
|
859b260764 | ||
|
|
fadb3f3389 |
17
CHANGELOG.md
17
CHANGELOG.md
@@ -1,5 +1,22 @@
|
||||
## Version History
|
||||
|
||||
## Release 2.0.3
|
||||
|
||||
* Remove PATH warning (#2001)
|
||||
* Add Python 3.6.14, 3.7.11, 3.8.11, and 3.9.6 (#1996)
|
||||
* Miniforge minor update to 4.10.1-5 (#1992)
|
||||
* Suggest that fish users init in interactive mode (#1991)
|
||||
|
||||
## Release 2.0.2
|
||||
|
||||
* Miniforge minor update to 4.10.1-5 (#1992)
|
||||
* Suggest that fish users init in interactive mode (#1991)
|
||||
* Add 3.10.0b3 (#1988)
|
||||
* Revert "Drop inferring version to install from `pyenv local`" (#1984)
|
||||
* Use system Python3 for tests (#1979)
|
||||
* Check for shims in path with pure Bash (#1978)
|
||||
* Update setup instructions for debian, ubuntu etc. (#1977)
|
||||
|
||||
## Release 2.0.1
|
||||
|
||||
* Drop inferring version to install from `pyenv local` (#1907)
|
||||
|
||||
@@ -240,6 +240,10 @@ easy to fork and contribute any changes back upstream.
|
||||
~~~bash
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
~~~
|
||||
|
||||
And put this line at the _bottom_ of `~/.profile`:
|
||||
~~~bash
|
||||
eval "$(pyenv init --path)"
|
||||
~~~
|
||||
|
||||
@@ -292,7 +296,7 @@ easy to fork and contribute any changes back upstream.
|
||||
|
||||
And add this to `~/.config/fish/config.fish`:
|
||||
~~~ fish
|
||||
status is-login; and pyenv init --path | source
|
||||
status is-interactive; and pyenv init --path | source
|
||||
~~~
|
||||
|
||||
If Fish is not your login shell, also follow the Bash/Zsh instructions to add to `~/.profile`.
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
version="2.0.1"
|
||||
version="2.0.3"
|
||||
git_revision=""
|
||||
|
||||
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then
|
||||
|
||||
@@ -61,7 +61,6 @@ function main() {
|
||||
;;
|
||||
"print")
|
||||
init_dirs
|
||||
warn_path
|
||||
print_env
|
||||
print_completion
|
||||
print_shell_function
|
||||
@@ -109,7 +108,7 @@ function help_() {
|
||||
echo "# Load pyenv automatically by appending"
|
||||
echo "# the following to ~/.config/fish/config.fish:"
|
||||
echo
|
||||
echo 'status is-login; and pyenv init --path | source'
|
||||
echo 'status is-interactive; and pyenv init --path | source'
|
||||
echo 'pyenv init - | source'
|
||||
echo
|
||||
echo "# If fish is not your login shell,"
|
||||
@@ -175,13 +174,6 @@ function print_path() {
|
||||
esac
|
||||
}
|
||||
|
||||
function warn_path() {
|
||||
if ! perl -ls0x3A -e 'while (<>) { chomp; ($_ eq $d) && exit 0; } exit 1' -- -d="${PYENV_ROOT}/shims" <<<"$PATH" ; then
|
||||
echo 'echo '\''WARNING: `pyenv init -` no longer sets PATH.'\'
|
||||
echo 'echo '\''Run `pyenv init` to see the necessary changes to make to your configuration.'\'
|
||||
fi
|
||||
}
|
||||
|
||||
function print_env() {
|
||||
case "$shell" in
|
||||
fish )
|
||||
|
||||
@@ -115,7 +115,12 @@ done
|
||||
|
||||
unset VERSION_NAME
|
||||
|
||||
# The first argument contains the definition to install. If the
|
||||
# argument is missing, try to install whatever local app-specific
|
||||
# version is specified by pyenv. Show usage instructions if a local
|
||||
# version is not specified.
|
||||
DEFINITION="${ARGUMENTS[0]}"
|
||||
[ -n "$DEFINITION" ] || DEFINITION="$(pyenv-local 2>/dev/null || true)"
|
||||
[ -n "$DEFINITION" ] || usage 1 >&2
|
||||
|
||||
# Define `before_install` and `after_install` functions that allow
|
||||
|
||||
@@ -4,7 +4,7 @@ export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-3.10.0b2" "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b2.tar.xz#c171663351fadef1759aef1dd5220ff69ccd76affb6d0aa719f90c63509b6aa8" standard verify_py310 copy_python_gdb ensurepip
|
||||
install_package "Python-3.10.0b3" "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tar.xz#2267aed4d01015176bcfe645ac6ca36e05f0c30a76f1f9973863692f6e25cc15" standard verify_py310 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-3.10.0b2" "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b2.tgz#ac678e44e522c0b769398f64fccda917f24a97d310e492d98989377f8865bac1" standard verify_py310 copy_python_gdb ensurepip
|
||||
install_package "Python-3.10.0b3" "https://www.python.org/ftp/python/3.10.0/Python-3.10.0b3.tgz#880f407e619aa92c831900a98c0793889c4b40008a0b5623fd829ef76c8d96be" standard verify_py310 copy_python_gdb ensurepip
|
||||
fi
|
||||
9
plugins/python-build/share/python-build/3.6.14
Normal file
9
plugins/python-build/share/python-build/3.6.14
Normal file
@@ -0,0 +1,9 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.1" "https://ftpmirror.gnu.org/readline/readline-8.1.tar.gz#f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-3.6.14" "https://www.python.org/ftp/python/3.6.14/Python-3.6.14.tar.xz#2663a7a0cfbd00fc76269dce4317db0b54be53c0f4d705aabb32b87efa02d5ae" standard verify_py36 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-3.6.14" "https://www.python.org/ftp/python/3.6.14/Python-3.6.14.tgz#70064897bc434d6eae8bcc3e5678f282b5ea776d60e695da548a1219ccfd27a5" standard verify_py36 copy_python_gdb ensurepip
|
||||
fi
|
||||
10
plugins/python-build/share/python-build/3.7.11
Normal file
10
plugins/python-build/share/python-build/3.7.11
Normal file
@@ -0,0 +1,10 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.1" "https://ftpmirror.gnu.org/readline/readline-8.1.tar.gz#f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-3.7.11" "https://www.python.org/ftp/python/3.7.11/Python-3.7.11.tar.xz#ddb4196ab5c4f69e895920a422cb60d42b46e2de2b173ce7fd57f1435459a734" standard verify_py37 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-3.7.11" "https://www.python.org/ftp/python/3.7.11/Python-3.7.11.tgz#b4fba32182e16485d0a6022ba83c9251e6a1c14676ec243a9a07d3722cd4661a" standard verify_py37 copy_python_gdb ensurepip
|
||||
fi
|
||||
10
plugins/python-build/share/python-build/3.8.11
Normal file
10
plugins/python-build/share/python-build/3.8.11
Normal file
@@ -0,0 +1,10 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.1" "https://ftpmirror.gnu.org/readline/readline-8.1.tar.gz#f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-3.8.11" "https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tar.xz#fb1a1114ebfe9e97199603c6083e20b236a0e007a2c51f29283ffb50c1420fb2" standard verify_py38 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-3.8.11" "https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz#b77464ea80cec14581b86aeb7fb2ff02830e0abc7bcdc752b7b4bdfcd8f3e393" standard verify_py38 copy_python_gdb ensurepip
|
||||
fi
|
||||
10
plugins/python-build/share/python-build/3.9.6
Normal file
10
plugins/python-build/share/python-build/3.9.6
Normal file
@@ -0,0 +1,10 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.1" "https://ftpmirror.gnu.org/readline/readline-8.1.tar.gz#f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02" mac_readline --if has_broken_mac_readline
|
||||
if has_tar_xz_support; then
|
||||
install_package "Python-3.9.6" "https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tar.xz#397920af33efc5b97f2e0b57e91923512ef89fc5b3c1d21dbfc8c4828ce0108a" standard verify_py39 copy_python_gdb ensurepip
|
||||
else
|
||||
install_package "Python-3.9.6" "https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz#d0a35182e19e416fc8eae25a3dcd4d02d4997333e4ad1f2eee6010aadc3fe866" standard verify_py39 copy_python_gdb ensurepip
|
||||
fi
|
||||
22
plugins/python-build/share/python-build/mambaforge-4.10.1-5
Normal file
22
plugins/python-build/share/python-build/mambaforge-4.10.1-5
Normal file
@@ -0,0 +1,22 @@
|
||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||
"Linux-x86_64" )
|
||||
install_script "Mambaforge-4.10.1-5-Linux-x86_64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Mambaforge-4.10.1-5-Linux-x86_64.sh#069e151cae85ed4747721e938e7974aa00889a1ae87cff33ddbdde9530fc4c6d" "miniconda" verify_py38
|
||||
;;
|
||||
"Linux-aarch64" )
|
||||
install_script "Mambaforge-4.10.1-5-Linux-aarch64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Mambaforge-4.10.1-5-Linux-aarch64.sh#64739b6eb0108ff3873d4edb32d2760db166cc822797234654c888c0f7063b9d" "miniconda" verify_py38
|
||||
;;
|
||||
"MacOSX-arm64" )
|
||||
install_script "Mambaforge-4.10.1-5-MacOSX-arm64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Mambaforge-4.10.1-5-MacOSX-arm64.sh#20553cd410ae250cd1cabce04e7478f57439ab1d55cb1c6a157998d96bee1b7d" "miniconda" verify_py39
|
||||
;;
|
||||
"MacOSX-x86_64" )
|
||||
install_script "Mambaforge-4.10.1-5-MacOSX-x86_64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Mambaforge-4.10.1-5-MacOSX-x86_64.sh#871fc6471ff8de7aa609db5f1a8e99bfaea6dabbbd2c41fa61c26ef82daa6832" "miniconda" verify_py38
|
||||
;;
|
||||
* )
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of Miniforge is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
25
plugins/python-build/share/python-build/miniforge3-4.10.1-5
Normal file
25
plugins/python-build/share/python-build/miniforge3-4.10.1-5
Normal file
@@ -0,0 +1,25 @@
|
||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||
"Linux-ppc64le" )
|
||||
install_script "Miniforge3-4.10.1-5-Linux-ppc64le" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Miniforge3-4.10.1-5-Linux-ppc64le.sh#0b23d9c25582dbd2cf8171366f5fb0ef5d5e7f8262eb670094f33400e88f3726" "miniconda" verify_py38
|
||||
;;
|
||||
"Linux-x86_64" )
|
||||
install_script "Miniforge3-4.10.1-5-Linux-x86_64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Miniforge3-4.10.1-5-Linux-x86_64.sh#f47637e899258d4fa568aa866c37ecf19a2dacc50fa64a5ebc65443ccdf73243" "miniconda" verify_py38
|
||||
;;
|
||||
"Linux-aarch64" )
|
||||
install_script "Miniforge3-4.10.1-5-Linux-aarch64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Miniforge3-4.10.1-5-Linux-aarch64.sh#d582c3bf289dc5c2f86dde9182b27e49b095d00da40842f3e379a113b12ce7cb" "miniconda" verify_py38
|
||||
;;
|
||||
"MacOSX-arm64" )
|
||||
install_script "Miniforge3-4.10.1-5-MacOSX-arm64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Miniforge3-4.10.1-5-MacOSX-arm64.sh#29fee39691dfe84cf3222c61fce0c8357d933eefcc0d49041b48153efe91f345" "miniconda" verify_py39
|
||||
;;
|
||||
"MacOSX-x86_64" )
|
||||
install_script "Miniforge3-4.10.1-5-MacOSX-x86_64" "https://github.com/conda-forge/miniforge/releases/download/4.10.1-5/Miniforge3-4.10.1-5-MacOSX-x86_64.sh#f67dfc4d5e3dea173e31267eb0890733098f0fd2d42944282d17f27a1bc3f8cc" "miniconda" verify_py38
|
||||
;;
|
||||
* )
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of Miniforge is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -23,6 +23,17 @@ stub_python_build() {
|
||||
unstub pyenv-rehash
|
||||
}
|
||||
|
||||
@test "install pyenv local version by default" {
|
||||
stub_python_build 'echo python-build "$1"'
|
||||
stub pyenv-local 'echo 3.4.2'
|
||||
|
||||
run pyenv-install
|
||||
assert_success "python-build 3.4.2"
|
||||
|
||||
unstub python-build
|
||||
unstub pyenv-local
|
||||
}
|
||||
|
||||
@test "list available versions" {
|
||||
stub_python_build \
|
||||
"--definitions : echo 2.6.9 2.7.9-rc1 2.7.9-rc2 3.4.2 | tr ' ' $'\\n'"
|
||||
|
||||
@@ -79,37 +79,37 @@ OUT
|
||||
}
|
||||
|
||||
@test "sys.executable with system version (#98)" {
|
||||
system_python=$(which python)
|
||||
system_python=$(which python3)
|
||||
|
||||
PYENV_VERSION="custom"
|
||||
create_executable "python" ""
|
||||
create_executable "python3" ""
|
||||
unset PYENV_VERSION
|
||||
|
||||
pyenv-rehash
|
||||
run pyenv-exec python -c 'import sys; print(sys.executable)'
|
||||
run pyenv-exec python3 -c 'import sys; print(sys.executable)'
|
||||
assert_success "${system_python}"
|
||||
}
|
||||
|
||||
@test 'PATH is not modified with system Python' {
|
||||
# Create a wrapper executable that verifies PATH.
|
||||
PYENV_VERSION="custom"
|
||||
create_executable "python" '[[ "$PATH" == "${PYENV_TEST_DIR}/root/versions/custom/bin:"* ]] || { echo "unexpected:$PATH"; exit 2;}'
|
||||
create_executable "python3" '[[ "$PATH" == "${PYENV_TEST_DIR}/root/versions/custom/bin:"* ]] || { echo "unexpected:$PATH"; exit 2;}'
|
||||
unset PYENV_VERSION
|
||||
pyenv-rehash
|
||||
|
||||
# Path is not modified with system Python.
|
||||
run pyenv-exec python -c 'import os; print(os.getenv("PATH"))'
|
||||
run pyenv-exec python3 -c 'import os; print(os.getenv("PATH"))'
|
||||
assert_success "$PATH"
|
||||
|
||||
# Path is modified with custom Python.
|
||||
PYENV_VERSION=custom run pyenv-exec python
|
||||
PYENV_VERSION=custom run pyenv-exec python3
|
||||
assert_success
|
||||
|
||||
# Path is modified with custom:system Python.
|
||||
PYENV_VERSION=custom:system run pyenv-exec python
|
||||
PYENV_VERSION=custom:system run pyenv-exec python3
|
||||
assert_success
|
||||
|
||||
# Path is not modified with system:custom Python.
|
||||
PYENV_VERSION=system:custom run pyenv-exec python -c 'import os; print(os.getenv("PATH"))'
|
||||
PYENV_VERSION=system:custom run pyenv-exec python3 -c 'import os; print(os.getenv("PATH"))'
|
||||
assert_success "$PATH"
|
||||
}
|
||||
|
||||
@@ -90,13 +90,6 @@ OUT
|
||||
assert_line 0 "set -gx PATH '${PYENV_ROOT}/shims' \$PATH"
|
||||
}
|
||||
|
||||
@test "prints a warning if shims not in PATH" {
|
||||
export PATH="$(perl -0x3A -ls -e 'while (<>) { chomp; ($_ ne $d) && print; }' -- -d="${PYENV_ROOT}/shims" <<<"$PATH")"
|
||||
run pyenv-init -
|
||||
assert_success
|
||||
assert_line 0 'echo '\''WARNING: `pyenv init -` no longer sets PATH.'\'
|
||||
}
|
||||
|
||||
@test "outputs sh-compatible syntax" {
|
||||
run pyenv-init - bash
|
||||
assert_success
|
||||
|
||||
Reference in New Issue
Block a user