Frage

Ich habe in letzter Zeit mit virtualenv während in Python zu entwickeln. Ich mag die Idee einer getrennten Entwicklungsumgebung mit der --no-site-packages Option, aber dies zu tun, während ein PyGTK App Entwicklung kann ein bisschen schwierig sein. Die PyGTK Module werden auf Ubuntu standardmäßig installiert, und ich möchte ein virtualenv machen (mit --no-site-packages) bewusst spezifische Module, die an anderer Stelle im System befinden.

Was ist der beste Weg, dies zu tun? Oder sollte ich es einfach aufzusaugen und legen Sie die --no-site-packages Option?

War es hilfreich?

Lösung

$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.pth 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.py 
$ ln -s /usr/lib/pymodules/python2.6/cairo/
$ python
>>> import pygtk
>>> import gtk

Andere Tipps

Eine Möglichkeit ist, die Pfade zu Ihrem Code mit sys.path hinzuzufügen.

import sys

sys.path.append(somepath)

Eine andere Möglichkeit ist Website zu verwenden, die zum Hinzufügen zu sys.path .pth Dateien zusätzlich verarbeitet.

import site

site.addsitedir(sitedir, known_paths=None)

https://docs.python.org/library/site.html

Aber Sie wollen wahrscheinlich nicht diese auf alle Ihrem zugehörigen Code hinzuzufügen.

Ich habe gesehen, erwähnt sitecustomize.py verwendet wird, so etwas zu erfüllen, aber nach einigen Tests konnte ich es nicht zur Arbeit kommen, wie zu erwarten ist.

Hier ist es erwähnt, dass Auto-Import von sitecustomize.py in 2,5 beendet, wenn Sie nicht auf 2.5 probieren Sie es aus. (Fügen Sie einfach einen der Pfad hinzufügen Methoden, die oben in die Datei und legen Sie es in dem Verzeichnis, das Programm ausgeführt wird) Eine Arbeit um Verfahren wird in der Post für die Benutzer von 2,5 und bis erwähnt.

http://code.activestate.com/recipes/552729/

ich in dieser Situation finden, Symlinks oder sogar das Kopieren bestimmter Dateien (Pakete, Module, Erweiterungen) funktioniert wirklich gut.

Es ermöglicht das Programm des ausgeführt wird in der Zielumgebung zu emulieren, anstatt der Anwendung der Änderung der Entwicklungsumgebung gerecht zu werden.

Die gleiche Angebot für so etwas wie App Engine.

Überprüfen Sie die postmkvirtualenv Hook-Skript heraus hier:

https://stackoverflow.com/a/9716100/60247

In diesem Fall benutzt er es PyQt zu importieren und SIP, nachdem ein neuer virtualenv erstellt wird, aber Sie können die Pakete hinzufügen, die Sie LIBS benötigen.

Und das Skript stimmen, weil es ist fantastisch:)

Wenn Sie die Links zu den entsprechenden Systems Python gtk-2.0 in der virtualenv aufnehmen möchten, können Sie einfach pip verwenden zu installieren ruamel.venvgtk :

pip installieren ruamel.venvgtk Sie haben keine Import etwas haben, sind die Links-Setup während der Installation.

Dies ist besonders praktisch, wenn Sie tox verwenden, in diesem Fall müssen Sie nur die Abhängigkeit enthalten (für tox):

deps:
    pytest
    ruamel.venvgtk

und einem neu eingerichteten python2.7-Umgebung werden die entsprechenden Links enthalten, bevor die Tests ausgeführt werden.

Weitere detaillierte Informationen darüber, wie die Links werden können Setup in

diese Antwort finden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top