CentOS 7 – Python 3.5 und virtualenv installieren

Python 3.5Wer endlich mal die alten Zöpfe der Python-Entwicklung abschneiden möchte sollte seine Projekte so langsam auf Python 3.x umstellen. CentOS 7 bringt per default Python in der Version 2.7.5 mit. Wer auf eine aktuelle Version von Python wechseln möchten kann dies trotzdem ohne Probleme auch unter CentOS 7.

Dieses Tutorial zeigt wie man unter CentOS 7 Python 3.5 optional installiert. Die gezeigte Lösung kann auch ohne Probleme für Python 3.4 angewendet werden.

Vorraussetzung für die Installation von Python 3.5 ist eine lauffähige CentOS 7 Installation. Die Installation von Python 3.5 erfolgt aus dem IUS-Repository. Wie dies eingebunden wird habe ich schon in dem Tutorial IUS Repo installieren gezeigt, daher wird dies hier nur ganz kurz erklärt.

Einbinden des IUS-Repositorys

Der Vorteil der Installation von Python 3.5 aus dem Repository gegenüber der „selbstgebauten Version“ ist, dass wir regelmäßig Updates aus dem Repo erhalten. Eine manuelle Pflege der Installation ist also nicht mehr nötig.

Mit folgenden Befehl binden wir das IUS-Repository ein.

yum install https://centos7.iuscommunity.org/ius-release.rpm

Nachdem die Installation abgeschlossen ist können wir uns die optional verfügbaren Python-Versionen anschauen.

yum search python3 | grep '\<python3.u\>'
python34u-debuginfo.x86_64 : Debug information for package python34u
python35u-debuginfo.x86_64 : Debug information for package python35u
python34u.x86_64 : Version 3 of the Python programming language aka Python 3000
python34u-debug.x86_64 : Debug version of the Python 3 runtime
python34u-devel.x86_64 : Libraries and header files needed for Python 3
python34u-libs.x86_64 : Python 3 runtime libraries
python34u-pip.noarch : A tool for installing and managing Python 3.4 packages
python34u-redis.noarch : Python client for Redis key-value store
python34u-setuptools.noarch : Easily build and distribute Python 3.4 packages
python34u-test.x86_64 : The test modules from the main python 3 package
python34u-tkinter.x86_64 : A GUI toolkit for Python 3
python34u-tools.x86_64 : A collection of tools included with Python 3
python34u-wheel.noarch : A built-package format for Python 3.4
python35u.x86_64 : Version 3 of the Python programming language aka Python 3000
python35u-debug.x86_64 : Debug version of the Python 3 runtime
python35u-devel.x86_64 : Libraries and header files needed for Python 3
python35u-libs.x86_64 : Python 3 runtime libraries
python35u-pip.noarch : A tool for installing and managing Python packages
python35u-setuptools.noarch : Easily build and distribute Python packages
python35u-test.x86_64 : The test modules from the main python 3 package
python35u-tkinter.x86_64 : A GUI toolkit for Python 3
python35u-tools.x86_64 : A collection of tools included with Python 3

Wie die Ausgabe zeigt stehen uns nun die Versionen Python 3.4 und Python 3.5 zur Verfügung.

Python 3.5 unter CentOS 7 installieren

Der Rest ist nun eigentlich ganz einfach. Die gewüschte Version installieren wir nun wie gewohnt mit yum. In unserem Fall ist es das Paket python35u und ein paar weitere Pakete für unser Python Virtual Environment.

yum install python35u python35u-setuptools python35u-devel python35u-pip

Nachdem auch diese Installation abgeschlossen ist können wir mit der Bereitstellung unseres Python Virtual Environment beginnen.

Virtual Environment für Python 3.5 erzeugen

Um ein Virtual Environment für Python 3.5 bereitzustellen müssen wir zuerst für unser installieres Python 3.5 virtualenv installieren. Das geht am einfachsten mit pip. Allerdings müssen wir dies passend zu unserer Python Version wählen.

pip3.5 install virtualenv
 Downloading virtualenv-13.1.2-py2.py3-none-any.whl (1.7MB)
    100% |████████████████████████████████| 1.7MB 250kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-13.1.2

Nachdem wir nun virtualenv installiert haben können wir wie gewohnt unser Virtual Environment ausrollen. In diesem Beispiel in das Verzeichnis .venv

virtualenv .venv
Using base prefix '/usr'
New python executable in .venv/bin/python3.5
Also creating executable in .venv/bin/python
Installing setuptools, pip, wheel...done.

Die Bereitstellung eines Virtual Environment kann auch mit einem unpriviligertem Benutzer erfolgen. Der Vorteil eines Virtualenv ist, dass wir unabhängig vom System verschiedene Python-Pakete selbständig installieren können. So haben wir auch die Kontrolle über die verwendeten Versionen der Pakete und sind vor Überraschungen eines unerwarteten Updates sicher :D Allerdings sind wir auch selber für die Updates in dieser Umgebung verwantwortlich.

Das Virtual Environment aktivieren wir wie folgt:

. .venv/bin/activate

Wenn wir nun Python aufrufen sollten sich dies mit der Version 3.5 melden.

Python 3.5.0 (default, Nov  3 2015, 23:32:46)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Pakete innerhalb des Virtual Environment installieren wir einfach mit pip. Allerdings ist zu beachten, dass wir dies mit aktivem Virtual Environment erledigen. Anbei ein Beispiel für die beliebten Frameworks bottle und flask.

(.venv)[user@server ~]# pip install bottle
Collecting bottle
  Downloading bottle-0.12.9.tar.gz (69kB)
    100% |████████████████████████████████| 69kB 962kB/s
Building wheels for collected packages: bottle
  Running setup.py bdist_wheel for bottle
  Stored in directory: /root/.cache/pip/wheels/0f/bd/f7/21e856551fa937e3c8a9d9592fd74a50714af336b8ee4f42c7
Successfully built bottle
Installing collected packages: bottle
Successfully installed bottle-0.12.9
(.venv)[user@server ~]# pip install flask
Collecting flask
  Downloading Flask-0.10.1.tar.gz (544kB)
    100% |████████████████████████████████| 544kB 570kB/s
Collecting Werkzeug>=0.7 (from flask)
  Downloading Werkzeug-0.11.2-py2.py3-none-any.whl (304kB)
    100% |████████████████████████████████| 307kB 1.0MB/s
Collecting Jinja2>=2.4 (from flask)
  Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)
    100% |████████████████████████████████| 266kB 1.3MB/s
Collecting itsdangerous>=0.21 (from flask)
  Downloading itsdangerous-0.24.tar.gz (46kB)
    100% |████████████████████████████████| 49kB 2.7MB/s
Collecting MarkupSafe (from Jinja2>=2.4->flask)
  Downloading MarkupSafe-0.23.tar.gz
Building wheels for collected packages: flask, itsdangerous, MarkupSafe
  Running setup.py bdist_wheel for flask
  Stored in directory: /root/.cache/pip/wheels/d2/db/61/cb9b80526b8f3ba89248ec0a29d6da1bb6013681c930fca987
  Running setup.py bdist_wheel for itsdangerous
  Stored in directory: /root/.cache/pip/wheels/97/c0/b8/b37c320ff57e15f993ba0ac98013eee778920b4a7b3ebae3cf
  Running setup.py bdist_wheel for MarkupSafe
  Stored in directory: /root/.cache/pip/wheels/94/a7/79/f79a998b64c1281cb99fa9bbd33cfc9b8b5775f438218d17a7
Successfully built flask itsdangerous MarkupSafe
Installing collected packages: Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask
Successfully installed Jinja2-2.8 MarkupSafe-0.23 Werkzeug-0.11.2 flask-0.10.1 itsdangerous-0.24

Weitere Besonderheiten und Informationen zu Python 3.5 gibt es auf der Projekt-Seite. Viels Spass beim Code anpassen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.