/ usr / local / opt / pyenv
Ci-dessous, exécutez tout en tant que root.
#Incluez les packages nécessaires pour construire python
# https://github.com/pyenv/pyenv/wiki#suggested-build-environment
yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel
# install pyenv
mkdir -p /usr/local/opt
git clone https://github.com/pyenv/pyenv.git /usr/local/opt/pyenv
#Spécification de version
cd /usr/local/opt/pyenv
git log --oneline --decorate --tags
#L'étiquette qui arrive en haut est la dernière
git checkout v1.2.18
#Lorsque vous vérifiez quelle version plus tard
# git log --oneline --decorate --tags
#Pour voir quelle balise correspond à HEAD
cat << 'EOF' > /etc/profile.d/pyenv.sh
export PYENV_ROOT="/usr/local/opt/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
EOF
source /etc/profile.d/pyenv.sh
#Mettez le python requis
pyenv install 3.6.10
Si vous souhaitez l'utiliser via sudo, définissez sudo dans l'un des deux modèles suivants.
--Ajoutez le chemin requis vers pyenv à secure_path
--Désactivez secure_path
pour rendre PATH transparent
Les deux sont très bien, mais choisissez celui qui convient à vos paramètres de sudoers existants. J'aimerais pouvoir utiliser + =
pour secure_path ...
#modèle 1: `secure_path`Ajoutez le chemin requis à pyenv
visudo
# secure_Ajoutez les deux suivants au chemin
# - /usr/local/opt/pyenv/shims
# - /usr/local/opt/pyenv/bin
#Changer avant
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
#Après le changement
Defaults secure_path = /usr/local/opt/pyenv/shims:/usr/local/opt/pyenv/bin:/sbin:/bin:/usr/sbin:/usr/bin
#modèle 1: `secure_path`Ajoutez le chemin requis à pyenv(cont'd)
cat << 'EOF' > /etc/sudoers.d/pyenv
Defaults env_keep += "PYENV_ROOT PYENV_VERSION"
EOF
#Motif 2: `secure_path`Pour rendre le PATH transparent
cat << 'EOF' > /etc/sudoers.d/pyenv
Defaults !secure_path
Defaults env_keep += "PATH"
Defaults env_keep += "PYENV_ROOT PYENV_VERSION"
EOF
# (Optional)Paramètres sudo sans mot de passe
#Permet à sudo d'exécuter des commandes liées à pyenv sans mot de passe dans un groupe d'utilisateurs spécifique
#modèle 1,2 Valable dans les deux cas
#Voici un exemple d'utilisation du groupe pyenv
cat << 'EOF' > /etc/sudoers.d/pyenv_nopasswd
Cmnd_Alias PYENV = /usr/local/opt/pyenv/bin/
%pyenv ALL = (ALL) NOPASSWD: PYENV
EOF
Notez que si les sudoers correspondent à plusieurs conditions, le "dernier" prévaudra. https://askubuntu.com/questions/100051/why-is-sudoers-nopasswd-option-not-working/100112#100112
visudo
#Fermer tel quel sans rien changer
#Si tu fais ça/etc/sudoers.d/*Corrige correctement l'autorisation de
misc
pyenv: cannot rehash: /usr/local/opt/pyenv/shims isn't writable
Il s'agit de ʻeval "$ (pyenv init-)" ʻin / etc / profile.d / pyenv.sh
où l'utilisateur connecté écrit dans / usr / local / opt / pyenv / shims
Je n'ai pas l'autorité. Cela ne fait pas de mal, alors ignorez-le, ou redirigez-le vers / dev / null
et supprimez-le si vous êtes curieux.
/etc/profile.d/pyenv.sh
export PYENV_ROOT="/usr/local/opt/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)" > /dev/null 2>&1
Puisque pip est trop vieux et que «pip install poetry» est de la mousse telle quelle, mettez d'abord à jour la version de pip.
PYENV_VERSION=3.4.0 pip install --upgrade "pip<19.2"
PYENV_VERSION=3.4.0 pip install poetry
Si vous faites accidentellement pip install --upgrade pip
sans spécifier la version et qu'un pip qui ne fonctionne pas dans la 3.4.0 est inclus, vous pouvez le récupérer en suivant les étapes ci-dessous.
pyenv shell 3.4.0
rm -Rf /usr/local/opt/pyenv/versions/3.4.0/lib/python3.4/site-packages/pip*
python -m ensurepip
python -m pip uninstall pip
python -m ensurepip
#Renvoyer la coque pyenv
unset PYTHON_VERSION
Après avoir supprimé et réinséré manuellement le pip par défaut avec ensure pip, utilisez à nouveau la commande pip pour se désinstaller puis utilisez ensure pip pour le restaurer. Le premier garantit que pip ne revient pas à l'état où la commande pip
peut être exécutée directement.