[PYTHON] systemweit pyenv

Voraussetzungen

Verfahren

Führen Sie unten alle als root aus.

#Fügen Sie die Pakete hinzu, die zum Erstellen von Python erforderlich sind
# 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

#Versionsspezifikation
cd /usr/local/opt/pyenv
git log --oneline --decorate --tags
#Das Tag, das oben steht, ist das neueste
git checkout v1.2.18

#Wenn Sie später überprüfen, welche Version
# git log --oneline --decorate --tags
#Um zu sehen, mit welchem Tag der HEAD übereinstimmt

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

#Setzen Sie die gewünschte Python
pyenv install 3.6.10

Wenn Sie es über sudo verwenden möchten, stellen Sie sudo in einem der beiden folgenden Muster ein.

Beides ist in Ordnung, aber wählen Sie diejenige, die Ihren vorhandenen Sudoer-Einstellungen entspricht. Ich wünschte, ich könnte + = für Secure_path verwenden ...

#Muster 1: `secure_path`Fügen Sie den erforderlichen Pfad zu pyenv hinzu

visudo
# secure_Fügen Sie dem Pfad die folgenden zwei hinzu
# - /usr/local/opt/pyenv/shims
# - /usr/local/opt/pyenv/bin

#Vorher ändern
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

#Nach der veränderung
Defaults    secure_path = /usr/local/opt/pyenv/shims:/usr/local/opt/pyenv/bin:/sbin:/bin:/usr/sbin:/usr/bin
#Muster 1: `secure_path`Fügen Sie den erforderlichen Pfad zu pyenv hinzu(cont'd)

cat << 'EOF' > /etc/sudoers.d/pyenv
Defaults env_keep += "PYENV_ROOT PYENV_VERSION"
EOF
#Muster 2: `secure_path`Um den Pfad transparent zu machen

cat << 'EOF' > /etc/sudoers.d/pyenv
Defaults !secure_path
Defaults env_keep += "PATH"

Defaults env_keep += "PYENV_ROOT PYENV_VERSION"
EOF
# (Optional)Passwortlose Sudo-Einstellungen
#Ermöglicht sudo, pyenv-bezogene Befehle ohne Kennwort in einer bestimmten Benutzergruppe auszuführen
#Muster 1,2 In beiden Fällen gültig
#Das Folgende ist ein Beispiel für die Verwendung der Pyenv-Gruppe

cat << 'EOF' > /etc/sudoers.d/pyenv_nopasswd
Cmnd_Alias PYENV = /usr/local/opt/pyenv/bin/
%pyenv ALL = (ALL) NOPASSWD: PYENV
EOF

Beachten Sie, dass, wenn Sudoer mehreren Bedingungen entsprechen, die "letzte" Vorrang hat. https://askubuntu.com/questions/100051/why-is-sudoers-nopasswd-option-not-working/100112#100112

visudo
#Schließen wie es ist, ohne etwas zu ändern
#Wenn du das tust/etc/sudoers.d/*Korrigiert die Erlaubnis von

misc

Fehler beim Anmelden angezeigt

pyenv: cannot rehash: /usr/local/opt/pyenv/shims isn't writable

Dies ist der "eval" $ (pyenv init-) "- Teil von" / etc / profile.d / pyenv.sh ", den der angemeldete Benutzer in" / usr / local / opt / pyenv / shims "schreibt Ich habe nicht die Autorität. Es tut nicht weh, also ignoriere es einfach oder leite es zu / dev / null um und lass es fallen, wenn du neugierig bist.

/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

Setzen Sie Poesie in Python 3.4.0

Da Pip zu alt ist und "Pip Install Poetry" Moos ist, aktualisieren Sie zuerst die Version von Pip.

PYENV_VERSION=3.4.0 pip install --upgrade "pip<19.2"
PYENV_VERSION=3.4.0 pip install poetry

Wenn Sie versehentlich "pip install --upgrade pip" ausführen, ohne die Version anzugeben, und ein Pip enthalten ist, der in 3.4.0 nicht funktioniert, können Sie ihn wiederherstellen, indem Sie die folgenden Schritte ausführen.

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

#Pyenv-Schale zurückgeben
unset PYTHON_VERSION

Verwenden Sie nach dem manuellen Löschen und erneuten Einfügen des Standard-Pip mit verify pip den Befehl pip erneut, um sich selbst zu deinstallieren, und stellen Sie ihn dann mithilfe von sure pip wieder her. Der erste stellt sicher, dass pip nicht in den Zustand zurückkehrt, in dem der Befehl pip direkt getroffen werden kann.

Recommended Posts

systemweit pyenv
pyenv note
pyenv memo
pyenv Zusammenfassung
Installieren Sie pyenv und rbenv systemweit unter CentOS
pyenv Installationshinweise
pyenv für Linux
pyenv + anaconda + python3
pyenv Spickzettel
pyenv + pyenv-virtualenv (CentOS7)