markosamuli.pyenv
markosamuli.pyenv
Branch | Pipeline |
---|---|
master |
Ansible-Rolle zur Installation von pyenv und pyenv-virtualenv auf Ubuntu- oder macOS-Entwicklungsmaschinen.
Optional kann pyenv-virtualenvwrapper installiert und zur Verwaltung von Umgebungen verwendet werden.
Verwenden Sie diese Rolle nicht auf Produktionsservern, da die Installation von pyenv nur im Home-Verzeichnis des Benutzers unterstützt wird.
Installation über Homebrew auf macOS
Die Standardmethode zur Installation von pyenv und Plugins auf macOS ist die Verwendung von Homebrew.
Die Rolle kann nicht erkennen, wie von bestehenden Homebrew-Installationen auf Git-basierte Installationen migriert wird, daher wird sie versuchen, eine vorhandene Installation zu erkennen und die vorherige Methode weiterhin zu verwenden.
Wenn Sie migrieren möchten, sichern Sie Ihr bestehendes ~/.pyenv
-Verzeichnis und löschen Sie es, bevor Sie diese Rolle ausführen.
Installation über Homebrew auf Linux
Die Rolle bietet eine experimentelle Unterstützung für die Installation von pyenv und Plugins mit Homebrew auf Linux.
Die Rolle installiert Homebrew auf Linux selbst nicht und erwartet, dass es im Standardverzeichnis /home/linuxbrew/.linuxbrew
installiert ist.
Das Installieren von Python-Versionen mit pyenv auf Linux, wenn die Homebrew-Installation vorhanden ist, hat einige bekannte Probleme:
- readline-Erweiterung wurde nicht kompiliert, pyenv wurde von Linuxbrew auf Ubuntu 16 installiert #1479
Installierte Python-Versionen
Diese Rolle installiert die in der Variable pyenv_python_versions
definierten Python-Versionen.
Um die globale Version festzulegen, setzen Sie die Variable pyenv_global
auf die gewünschten Version(en).
pyenv_global: "{{ pyenv_python37_version }} system"
Dies ist so konfiguriert, dass die neuesten Python 2- und Python 3-Versionen sowie die Systemversion als Standard verwendet werden.
Änderungen an Shell-Konfigurationsdateien
Diese Rolle erstellt eine Konfigurationsdatei in ~/.pyenv/.pyenvrc
, die in den Dateien .bashrc
und .zshrc
geladen wird.
Die Codevervollständigung wird standardmäßig geladen.
Wenn Sie Ihre Shell-Skripte .dotfiles
verwalten oder ein Framework verwenden, sollten Sie pyenv_init_shell
auf false
setzen und diese Dateien selbst aktualisieren, um sie sauber zu halten.
Referenzkonfiguration für .bashrc
:
if [ -e "$HOME/.pyenv/.pyenvrc" ]; then
source $HOME/.pyenv/.pyenvrc
if [ -e "$HOME/.pyenv/completions/pyenv.bash" ]; then
source $HOME/.pyenv/completions/pyenv.bash
elif [ -e "/usr/local/opt/pyenv/completions/pyenv.bash" ]; then
source /usr/local/opt/pyenv/completions/pyenv.bash
fi
fi
Referenzkonfiguration für .zshrc
:
if [ -e "$HOME/.pyenv/.pyenvrc" ]; then
source $HOME/.pyenv/.pyenvrc
if [ -e "$HOME/.pyenv/completions/pyenv.zsh" ]; then
source $HOME/.pyenv/completions/pyenv.zsh
elif [ -e "/usr/local/opt/pyenv/completions/pyenv.zsh" ]; then
source /usr/local/opt/pyenv/completions/pyenv.zsh
fi
fi
Rollenvariablen
Der Pfad zu ~/.pyenv
basiert auf Umgebungsvariablen:
pyenv_home: "{{ ansible_env.HOME }}"
pyenv_root: "{{ ansible_env.HOME }}/.pyenv"
Update der .bashrc
- und .zshrc
-Dateien im Home-Verzeichnis des Benutzers:
pyenv_init_shell: true
Versionen, die installiert werden sollen:
pyenv_version: "v1.2.13"
pyenv_virtualenv_version: "v1.1.5"
pyenv_virtualenvwrapper_version: "v20140609"
Neueste Python 3.7- und Python 3.8-Versionen:
pyenv_python37_version: "3.7.6"
pyenv_python38_version: "3.8.1"
Python 2- und Python 3-Versionen werden standardmäßig installiert:
pyenv_python_versions:
- "{{ pyenv_python37_version }}"
- "{{ pyenv_python38_version }}"
Setzen Sie die globale Version auf Python 3.7 mit Fallback auf system
:
pyenv_global: "{{ pyenv_python37_version }} system"
Installieren Sie das virtualenvwrapper-Plugin:
pyenv_virtualenvwrapper: false
pyenv_virtualenvwrapper_home: "{{ ansible_env.HOME }}/.virtualenvs"
Installation über Homebrew-Paketmanager auf macOS:
pyenv_install_from_package_manager: true
Erkennen Sie die Methode der vorhandenen Installation und verwenden Sie diese:
pyenv_detect_existing_install: true
Installation über Homebrew auf Linux:
pyenv_homebrew_on_linux: true
Beispiel-Playbook
- hosts: localhost
connection: local
become: false
roles:
- role: markosamuli.pyenv
Aktualisierung der Versionen
Führen Sie die folgenden Skripte aus, um die neuesten Versionen von GitHub zu erhalten und diese in den Rollen-Standardeinstellungen zu aktualisieren.
Aktualisieren Sie die pyenv-Version:
./update-release pyenv
Aktualisieren Sie die pyenv-virtualenv-Version:
./update-release pyenv-virtualenv
Aktualisieren Sie die Standard-Python 3.7-Version:
./update-python python37
Aktualisieren Sie die Standard-Python 3.8-Version:
./update-python python38
Aktualisieren Sie alle Versionen:
make update
Codierungsstil
Installieren Sie Pre-Commit-Hooks und prüfen Sie den Codierungsstil:
make lint
Tests ausführen
Führen Sie Tests unter Ubuntu und Debian mithilfe von Docker aus:
make test
Danksagungen
Verwendung der Datei .pyenvrc
und Teile zur Installation der Python-Version stammen aus der Rolle avanov.pyenv.
Entwicklung
Installieren Sie die Entwicklungsabhängigkeiten in einem lokalen virtualenv:
make setup
Installieren Sie Pre-Commit-Hooks:
make install-git-hooks
Änderungen
Lizenz
Autorinformationen
ansible-galaxy install markosamuli.pyenv