Wie füge ich unter Debian ein Python-Paket in Dist-Packages zu einer virtuellen Umgebung hinzu?

Wie füge ich unter Debian ein Python-Paket in Dist-Packages zu einer virtuellen Umgebung hinzu?

Wie füge ich ein Python-Paket in /usr/share/pyshared/oder /usr/lib/pythonX.Y/dist-packages/( zum Beispiel python-numpyoder python-scipy) zu einer virtuellen Umgebung hinzu?

Ist beim Hinzufügen des Pakets zur virtuellen Umgebung erforderlich, dass für die Installation die „normale“ Python-Installationsmethode ( setpy.pyusw.) verwendet wird oder eine eigene vorhanden ist?

Grundsätzlich möchte ich in der Lage sein, Python-Pakete mit komplexen C-Erweiterungen ( numpy, scipy, pyQt/pyside, pygtkusw.) einfach zu einer virtuellen Umgebung hinzuzufügen.

Antwort1

Wie Sie bereits erwähnt haben, ist es oft am besten, ein Rad herzustellen, insbesondere wenn Sie es regelmäßig neu installieren.

Für die GTK-Bindings von Python hat das bei mir nicht funktioniert und ich brauchte eine Möglichkeit, Code zu testen tox(der die virtuellen Umgebungen mit --no-site-packages für Sie erstellt). Zu Testzwecken wäre es (für mich) gut genug, die relevanten systeminstallierten Versionen einzubinden, aber nicht alles von site-packages/ dist-packages.

Dazu habe ich ein installierbares Paket erstellt (ruamel.venvgtk), das die richtigen Links für Python2.7 und Python3.4 auf Debian-basierten Systemen (Ubuntu, Linux Mint) einrichtet. Dies geschieht während der Installation des Programms, sodass Sie Ihr Programm nicht ändern müssen. Der Abschnitt tox.inider Datei sieht folgendermaßen aus:deps

deps =
    pytest
    ruamel.venvgtk

und für jede erstellte virtuelle Umgebung werden die entsprechenden Links pipinstalliert und erstellt.ruamel.venvgtk

Antwort2

Ja, wenn Ihre virtuelle Umgebung aktiv ist, müssen Sie Ihr erforderliches Paket mit Distutils, der „normalen“ Python-Installationsmethode ( python setup.py install), oder mit einem virtuellen Umgebungstool (z. B. pip install package) installieren.

Die Version des Pakets, das Sie installieren, ist die aktive Paketversion für die virtuelle Umgebung. Es spielt keine Rolle, ob Sie die virtuelle Umgebung mit virtualenv MY_ENVoder erstellen virtualenv --no-site-packages MY_ENV. Im ersten Fall sind alle in Ihrem System-Python installierten Pakete in der virtuellen Umgebung verfügbar, aber jedes Paket, das Sie in der virtuellen Umgebung installieren, maskiert die Version in Ihrem System-Python, während die virtuelle Umgebung aktiv ist. Im zweiten Fall haben Sie eine isolierte Python-Umgebung in der virtuellen Umgebung, in der nur die Standardbibliothekspakete und alles, was Sie dort installieren, verfügbar sind.

Beachten Sie, dass Pakete wie Numpy und Scipy unter Linux keine vorgefertigten Binärdateien bereitstellen. Sie müssen also in der Lage sein, diese selbst zu erstellen, wenn Sie nicht die über Ihren Paketmanager verfügbaren Versionen verwenden möchten.

Antwort3

Ich schätze, da es zu dieser Frage seit über einem Jahr (Stand: März 2014) keine Aktivität gab und niemand eine Antwort hat, werde ich also schreiben, wie ich das Problem mehr oder weniger gelöst habe.

Verwenden Sie für Pakete, deren Quellinstallationsmethode virtuelle Umgebungen (Numpy/Scipy, Pyside) respektiert, Wheels, um einen Neuaufbau in jedem Venv zu vermeiden.

Bei Paketen, die dies nicht tun (GTK), hängt es davon ab, wie sie in Python eingebunden werden.

verwandte Informationen