Installation mit dem Systempaketmanager

Installation mit dem Systempaketmanager

Ich experimentiere mit Alpine-Linux und es funktioniert nicht wie erwartet.

Ich versuche es zu benutzen pip install cryptography, aber es dauert ewig und endet bei dieser unverständlichen Ausgabe

Running command /usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-h925mzyj/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__f le__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-gdaazboj --python-tag cp36

Was kann ich tun?

Antwort1

Alpine ist eine Distribution, die Kopfschmerzen bereitet, wenn die meisten Python-Pakete C/C++-Erweiterungen enthalten (in C/C++ geschriebener Code, der in ein gemeinsames Objekt kompiliert und über eine externe Funktionsbibliothek in Python geladen wird). Der Grund dafür ist, dassPEP 513Diese Portabilitätsdefinition zwischen Linux-Distributionen manylinux1basiert auf glibc/glibcxx. Da Alpine musl libc verwendet, manylinux1kann auf Alpine kein kompatibles Wheel installiert werden. Wenn Sie also ausgeben pip install cryptography, wird das Wheel mit den kompilierten Erweiterungen gefiltert und pipversucht, das Paket mit allen C-Erweiterungen aus dem Quellcode zu erstellen.

Installation mit dem Systempaketmanager

Dies ist die bevorzugte Methode und wurde von @GracefulRestart in den Kommentaren erwähnt; verwenden Sie sie, wenn Sie nicht die neueste Version des Pakets benötigen.Alpine bietet das vorgefertigte cryptographyPaket, derzeit ist es das cryptography<=2.1.4. Installieren Sie es mit apk:

$ apk add py-cryptography

Installieren mit pip

Wenn Sie die neueste Version benötigen, können Sie versuchen, sie aus dem Quellcode zu erstellen, indem Sie sie mit installieren pip.

Vorbereiten der Build-Umgebung

Sie benötigen den Compiler und die Bibliotheken mit Header-Dateien: musl, OpenSSL, libffi und Python selbst:

$ apk add gcc musl-dev libffi-dev openssl-dev python3-dev

Gebäude

pip install pkgnameblendet das Build-Protokoll standardmäßig aus. Um das vollständige Build-Protokoll anzuzeigen, fügen Sie hinzu, -vvvum die Ausführlichkeit zu erhöhen. (Optional) Sie können die Installation von manylinux1Wheels auch explizit verbieten, indem Sie hinzufügen --no-binary=pkgname, damit der Build aus der Quelle erzwungen wird.

$ pip install cryptography -vvv --no-binary=cryptography

verwandte Informationen