Installieren von lxml 3.1.2 und lxml2 unter Ubuntu 12.04

Installieren von lxml 3.1.2 und lxml2 unter Ubuntu 12.04

Ich habe Folgendes auf SO gefragt:https://stackoverflow.com/questions/19852911/lxml-3-1-2-and-lxml2-both-on-ubuntu/19856674#19856674

Aber für AskUbuntu ist es vielleicht besser geeignet. Hier ist es also noch einmal in umformulierter Form.

Auf der lxml-Site wird vorgeschlagen, dass es möglich ist, sowohl lxml2 als auch die neueste Version von lxml auf Ubuntu zu haben:

Verwenden von lxml mit python-libxml2

Wenn Sie lxml zusammen mit den offiziellen libxml2-Python-Bindings verwenden möchten (vielleicht weil eine Ihrer Abhängigkeiten diese verwendet), müssen Sie lxml statisch erstellen. Andernfalls stören sich die beiden Pakete an Stellen, an denen die libxml2-Bibliothek eine globale Konfiguration erfordert, was alle möglichen Auswirkungen haben kann, von verschwindender Funktionalität bis hin zu Abstürzen in einem der beiden. Um einen statischen Build zu erhalten, übergeben Sie entweder die Option --static-deps an das Skript setup.py oder führen Sie pip mit der auf true gesetzten Umgebungsvariable STATIC_DEPS oder STATICBUILD aus, d. h. STATIC_DEPS=true pip install lxml. Die Umgebungsvariable STATICBUILD wird gleichwertig zur Variable STATIC_DEPS behandelt, wird aber auch von einigen anderen Erweiterungspaketen verwendet.

Ich bin im Allgemeinen verwirrt darüber, wie Pip-Pakete und Ubuntu-Pakete miteinander auskommen, daher zögere ich,STATIC_DEPS=true pip install lxml. Wird es mein installiertes lxml2-Paket beschädigen/durcheinanderbringen?

Der Vorschlag auf SO war, das neue lxml in einer virtuellen Umgebung zu installieren. Das scheint die beste Lösung zu sein, aber die lxml-Site schlägt vor, dass auch eine duale Installation funktioniert.

Allgemein: Was passiert, wenn ich pip verwende (um eine neuere Installation zu erhalten) für ein Paket, das bereits von apt-get installiert wurde?

Antwort1

Ubuntu verwendet Python in seinen Distributionen in großem Umfang. Aus diesem Grund ist es meine Vorgehensweise, die von Ubuntu bereitgestellten Versionen strikt unverändert zu lassen und sie nur über den Update-Manager oder apt-get zu aktualisieren. Auf diese Weise vermeide ich das Risiko, einen Teil des Ubuntu-Codes zu destabilisieren, der von einer bestimmten Python-Paket-/Modulversion abhängig ist.

Ich erledige meine gesamte Entwicklungsarbeit in Virtualenv-Arbeitsbereichen und konfiguriere meine Befehlszeile und Eclipse so, dass für die jeweilige Anwendung, an der ich arbeite, der entsprechende Arbeitsbereich verwendet wird. Auf diese Weise beeinträchtige ich Ubuntu nicht und Ubuntu stört mich nicht.

Es ist durchaus möglich, dass eine duale Installation von lxml „funktioniert“, aber die Installation ist wahrscheinlich instabil. Warum das Risiko eingehen?

verwandte Informationen