Eigenes Python installieren: Unterschied zwischen den Versionen
Tim (Diskussion | Beiträge) |
Tim (Diskussion | Beiträge) |
||
Zeile 69: | Zeile 69: | ||
pipenv install --python 3.10 | pipenv install --python 3.10 | ||
= Python Web Applikation mit Passenger = | |||
Die Integration der eigenen Python-Installation in den Apache erfolgt über das Apache-Modul "Passenger". | Die Integration der eigenen Python-Installation in den Apache erfolgt über das Apache-Modul "Passenger". |
Version vom 17. Januar 2024, 16:06 Uhr
Motivation
Manchmal macht es Sinn eine eigene Python-Umgebung zu installieren. Gründe dafür können sein
- Unabhängigkeit vom System-Python
- Volle Kontrolle über eingesetzte Python-Packages
- Freie Auswahl der Python-Distribution (z. B. die neueste)
Installation eines selbst kompilierten Pythons
Ich installiere ein eigenes Python (hier Python 3.11) so:
mkdir /home/pacs/xyz00/opt mkdir /home/pacs/xyz00/build cd /home/pacs/xyz00/build wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz tar xzf Python-3.11.3.tgz cd Python-3.11.3.tgz ./configure --enable-optimizations --prefix=/home/pacs/xyz00/opt make make install cd .. rm -rf build
Die folgenden Pfade sollten in der Datei .profile
zum Ausführungspfad hinzugefügt werden:
export PATH=$HOME/opt/bin:$HOME/.local/bin:$PATH
Dann sollten noch die Programme pip und pipenv für die neue Pythonversion installiert werden:
# setze den neuen Pfad . ~/.profile python3 -m pip install --user --upgrade pip pipenv
Installation mit pyenv
Es gibt eine komfortable Möglichkeit, eigene Python Versionen zu installieren.
Das Werkzeug kommt aus der Ruby Welt, und ist ein Fork von rbenv.
Siehe auch https://github.com/pyenv/pyenv
Hinweis für lokale Installation
Falls ihr z.B. für Ansible lokal auf eurem eigenen Rechner eine neuere Version von Python installieren wollt, werden folgende Pakete benötigt:apt-get -y install libssl-dev libbz2-dev libncurses-dev libffi-dev libreadline-dev libsqlite3-dev liblzma-dev zlib1g-dev
Diese Pakete sind bei Hostsharing bereits installiert.
Hier die Befehle, die ausgeführt werden müssen:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile echo 'eval "$(pyenv init -)"' >> ~/.profile source ~/.profile pyenv versions pyenv version # siehe die aktuellen Versionen: https://www.python.org/downloads/ pyenv install 3.10.11 pyenv global 3.10 python --version
Um pipenv speziell mit dieser Python-Version zu installieren:
pip install pipenv pipenv install --python 3.10
Python Web Applikation mit Passenger
Die Integration der eigenen Python-Installation in den Apache erfolgt über das Apache-Modul "Passenger". Vor der Nutzung dieses Moduls bitte unbedingt die Hinweise zur Nutzung beachten.
Den Pfad zum Python-Binärprogramm konfiguriert man in den Eigenschaften der Domain in HSAdmin, unter PassengerPython: z.B. /home/pacs/xyz00/users/example/.pyenv/versions/3.9.18/bin/python3
(Versionsnummer, User und Paket im Pfad anpassen)
Für's Debugging ist die zusätzlich Option
PassengerFriendlyErrorPages On
hilfreich.
Zum Testen kann man eine "passenger_wsgi.py" ins Verzeichnis /home/pacs/xyz00/users/example/doms/example.com/app-ssl/
ablegen.
Eine minimale "passenger_wsgi.py" zur Anzeige der Python Version:
#!/usr/bin/python3 import sys import os def application(environ, start_response): status = '200 OK' path = os.environ['PATH'] python_executable_path = sys.executable output = f"Hello World!\nThis is Python {sys.version}\n" + \ f"with PATH {path}\n and executable {python_executable_path}" response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [bytes(output,'utf-8')]