Wie füge ich dieses Paket einer virtuellen Umgebung hinzu, wenn ein Python-Paket in /usr/share/pyshared/
oder /usr/lib/pythonX.Y/dist-packages/
( zum Beispiel python-numpy
oder python-scipy
) vorhanden ist?
Erfordert das Hinzufügen des Pakets zur virtuellen Umgebung, dass es die "normale" Python-Installationsmethode ( setpy.py
usw.) zur Installation verwendet oder eine eigene hat?
Im Grunde möchte ich in der Lage sein leicht Python - Pakete hinzufügen, die C - Erweiterungen haben , die komplex sind ( numpy
, scipy
, pyQt/pyside
, pygtk
etc.), zu einem virtualenv.
--system-site-packages
Option, die alle Pakete in dist-packages / site-packages enthält. Ich möchte nur ein Paket einschließen.Antworten:
Wie Sie bereits angedeutet haben, ist es oft am besten, ein Rad herzustellen, insbesondere wenn Sie es regelmäßig neu installieren.
Für die gtk-Bindungen von Python funktionierte dies bei mir nicht und ich brauchte eine Möglichkeit, den Code mithilfe von
tox
(der die virtuellen Envs für Sie mit --no-site-packages erstellt) zu testen . Zu Testzwecken wäre es (für mich) gut genug, die entsprechenden vom System installierten Versionen zu verknüpfen, aber nicht alles vonsite-packages
/dist-packages
.Zu diesem
ruamel.venvgtk
Zweck habe ich ein installierbares Paket ( ) erstellt, das die richtigen Links für Python2.7 und Python3.4 auf Debian-basierten Systemen (Ubuntu, Linux Mint) erstellt. Dies geschieht während der Einrichtung des Programms, sodass Sie Ihr Programm nicht ändern müssen. Der Abschnitt dertox.ini
Dateideps
sieht folgendermaßen aus:und für jede erstellte virtuelle Umgebung
pip
werdenruamel.venvgtk
die entsprechenden Links installiert und erstellt.quelle
gi
Bibliothek. Ich hatte pgi noch nie gesehen. Ich benutze pygtk nur für ein paar Projekte, war aber irritiert, dass ich es nicht testen konntetox
, daher die Erstellung dieses PaketsJa, wenn Ihr virtualenv aktiv ist, müssen Sie Ihr erforderliches Paket mit distutils, der "normalen" Python-Installationsmethode (
python setup.py install
) oder mit einem virtualenv-fähigen Tool (zpip install package
. B. ) installieren .Die Version des von Ihnen installierten Pakets ist die aktive Paketversion für die virtuelle Umgebung. Es spielt keine Rolle, ob Sie die virtuelle Umgebung mit
virtualenv MY_ENV
oder erstellenvirtualenv --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 sie daher bequem selbst erstellen können, wenn Sie die über Ihren Paketmanager verfügbaren Versionen nicht verwenden möchten.
quelle
$ virtualenv --no-site-packages MY_ENV
cd MY_ENV
source bin/activate
die Pakete nicht ausführen möchten . Die einzige Möglichkeit, die Sie sehen können, besteht darin, die virtuelle Umgebung mit zu erstellen--no-site-packages
und dann die entsprechenden Paketverzeichnisse von Ihren System-Site-Paketen in die Site-Pakete in der virtuellenIch denke, da diese Frage seit über einem Jahr (Stand März 2014) keine Aktivität mehr hatte, hat niemand eine Antwort, also werde ich schreiben, wie ich das Problem irgendwie gelöst habe.
Verwenden Sie für Pakete, deren Quellinstallationsmethode virtuelle Umgebungen (numpy / scipy, pyside) berücksichtigt, Räder, um zu vermeiden, dass sie in jedem Venv neu erstellt werden müssen.
Bei Paketen, die dies nicht tun (GTK), hängt es davon ab, wie sie sich in Python einbinden.
quelle