2009-09-30 8 views
11

Ich versuche, die pycairo (Python-Bindungen für die cairo graphics library) unter OSX zu installieren.Wie installiere ich pycairo auf osx?

Ich begann mit

easy_install pycairo 

und bekam:

Requested 'cairo >= 1.8.8' but version of cairo is 1.0.4 

error: Setup script exited with Error: cairo >= 1.8.8 not found 

So zu kairo Website Ich ging hin und heruntergeladen das neueste Paket (1.8.8) von kairo, und auch das neueste Paket von etwas genannt pixman (beide Quellpakete - Osx-Binärdateien konnten nicht gefunden werden)

entpackt beide, jeweils in eigenem Verzeichnis. für pixman arbeitete die regelmäßige ./configure ; make ; sudo make install nur für kairo zu finden, schien configure zu arbeiten, aber versäumt hat mit:

In file included from cairo-analysis-surface.c:37: 
cairoint.h:71:20: error: pixman.h: No such file or directory 

Was mache ich falsch?

Und warum muss ich mich so sehr darum bemühen, eine Softwarebibliothek für ein Betriebssystem zu bekommen, das "einfach funktioniert"? Warum ist Darwin nicht mehr wie Linux?

+0

Update: Ich habe alle .h-Dateien aus dem Pixman-Verzeichnis nach Cairo kopiert. Ein hässliches, brutales Ding, aber es schien zu funktionieren: 'make; sudo make install 'scheint gut zu funktionieren. Ich bekomme immer noch "Requested 'cairo> = 1.8.8', aber die Version von Cairo ist 1.0.4" wenn Sie versuchen, pycairo, obwohl installieren. Es denkt, ich habe Kairo 1.0.4 und ignoriert das neue. Irgendeine Idee warum? Wie kann ich das beheben? – Yoav

Antwort

6

Ok. Ich habe es gelöst. Wenn Sie hier eine Lösung für die Zukunft hinzufügen, könnte das jemandem helfen.

Grundsätzlich ist das gesamte Ports/Fink-System ein bisschen durcheinander, und osx spielt nicht wirklich gut mit der Linux-y-Welt.

So sind die Schritte, die ich brauchte pycairo auf OSX zu installieren waren:

  • Laden Sie die neueste Source-Versionen von pixman, kairo, pycairo
  • alles extrahieren. Dann:

    cd PIXMAN_DIR ; ./configure ; make ; sudo make install 
    cd CAIRO_DIR ; cp PIXMAN_DIR/pixman/*.h . ; ./configure ; make ; sudo make install 
    cd PYCAYRO_DIR; locate cairo.pc 
    

    hoffentlich werden mehrere Standorte zurückgegeben. Wählen Sie den wahrscheinlichsten (einen mit dem neuesten Kairo). Für mich war es "/opt/local/lib/pkgconfig/cairo.pc" und zu tun:

    export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ 
    

    danach, noch in PYCAIRO_DIR, tun:

    python setup.py install 
    

Dies sollte tun es ...

+1

Ich denke, dass Sie Probleme haben, weil Sie macports fink und Ihren eigenen Code zusammen mischen - benutzen Sie nur einen von ihnen;) effektiv jeder von ihnen entspricht dem eigenen Verpackungssystem von Linix. Der Grund, warum ich das sage, ist, dass/opt/local/bin von Macports und nicht Ihr eigener Code wäre, der standardmäßig/usr/local/bin – Mark

3

Der Befehl port installiert die Bibliothek für die DarwinPort Python-Installation, die sich von der Framework-Erstellung unterscheidet (die Schritte 2 und 3 sollten also nicht funktionieren). Versuchen Sie stattdessen sudo easy_install pycairo (obwohl Ihr Schritt 4 dem entsprechen sollte).

Schauen Sie sich auch which python an, um zu überprüfen, ob Sie tatsächlich den Python laufen lassen, von dem Sie glauben, dass er es ist.

+0

Hier (http://stackoverflow.com/questions/1500866/ how-to-install-pycairo-on-osx) ist eine andere Person mit einem ähnlichen Problem –

+0

Wenn Sie nicht vorsichtig sind, könnte die Verwendung von easy_install wie die Angelegenheit noch komplizierter werden, indem Sie die von Apple gelieferte Python in das Bild bringen und es wird nicht helfen das Grundproblem lösen. –

+0

Ich nahm Akusete um zu meinen, dass er pycairo aus seinem Python2.6.4 Framework bauen wollte (sein Schritt 1). Wenn er das schafft, könnte er alle MacPort-Python-Sachen wegwerfen und dieses Problem in Zukunft vermeiden. Aber Ihre All-MacPorts-Lösung ist auch gut. Gibt es einen Grund, es zu bevorzugen? –

7

Es scheint, dass Sie hier verschiedene Installationsoptionen mischen. Der MacPorts-Paketsystem-Befehl port install sollte automatisch alle für ein bestimmtes Paket erforderlichen Abhängigkeiten abrufen, sodass der Trick darin besteht, mit dem richtigen Projekt auf oberster Ebene zu beginnen. Für Python-Pakete hat MacPorts derzeit eine allgemeine Konvention: Pakete, die mit py- beginnen, sind für Python 2.4, diejenigen mit py25- sind für 2.5 und py26- für 2.6. Zurzeit sind py-cairo, py25-cairo und py26-cairo Pakete in MacPorts verfügbar.

Durch py-cairo Wahl nahm Sie die python2.4-Version und Sie werden wahrscheinlich feststellen, dass MacPorts gebaut und installiert eine python2.4 für Sie (bei /opt/local/bin/python2.4 verbunden sind) und, wenn Sie es starten, werden Sie wahrscheinlich, dass Sie finden Kann dort Kairo importieren. Nun, dass kann für Ihre Bedürfnisse in Ordnung sein, aber Python 2.4 ist ziemlich alt und nicht mehr so ​​unterstützt, wenn Sie gerade starten, könnte es besser sein, mit Python 2.6, eine der beiden aktuellen Versionen von Python zu starten. Um dies zu tun, alles, was Sie benötigen, sollten zu tun ist:

sudo port install py26-cairo 

Das sollte bringen in aller fehlenden Abhängigkeiten, vor allem die MacPorts python2.6, die Sie von /opt/local/bin/python2.6 ausführen können. Vielleicht möchten Sie Ihre $PATH in Ihrem Shell-Startup-Skript, wahrscheinlich .bash_profile, um /opt/local/bin früh auf den Suchpfad setzen.

Da die Installation von Cairo und seinen Python-Bindings ziemlich komplex zu sein scheint, sollte es einfacher und besser sein, dafür eine vollständige MacPorts-Lösung zu verwenden. Das bedeutet, dass Sie unnötigerweise (und harmlos) einige Python-Instanzen installiert haben, die Sie nicht benötigen. Aber wenn Sie nicht möchten, die Dinge ein wenig reinigen, können Sie bequem die MacPorts python24 entfernen mit:

sudo port uninstall py-cairo python24 

vollständig zu entfernen die python.org installiert Python komplizierter. Ich habe den Prozess here erklärt. Aber es gibt keine dringende Notwendigkeit, beides zu entfernen, solange Sie Ihre Wege gerade halten.

+0

Ich habe Ihren Vorschlag versucht und es hat erfolgreich funktioniert. Vielen Dank. Ich denke, mein Hauptproblem war, dass ich die Mechanismen und Konventionen von Macports und Macos im Allgemeinen nicht kenne. Ich habe Macports Einführungen und Dokumentation von macports.org gelesen, aber ich erkannte nie die Versionsnummer im Titel verwendet wurde (ich nahm an, dass es auf die neueste Version oder etwas gelöst verwendet) – Akusete

+0

Ja, die MacPorts Python Namenskonvention ist ziemlich verwirrend . Wenn sie mit py24- anstatt mit py begonnen hätten, wäre es vielleicht weniger. Froh, dass alles funktioniert hat! –

+0

Wie erhalten Sie 'cairo.HAS_QUARTZ_SURFACE', um 1 zu erhalten? – vy32

2

Unter Mac OS können Sie mehrere Python-Versionen installieren. Sie können sogar noch mehr haben, wenn Sie Python über Fink oder MacPorts installieren möchten. Wenn Sie Bibliotheken von der Quelle kompilieren, sollten Sie sicherstellen, dass sie auf die richtige Installation verweisen.

Ich habe derzeit Python 2.5.1 und Python 2.6.4 auf meinem Rechner installiert, die ich über python2.5 bzw. python aufrufen kann. Sie leben in zwei verschiedenen Ordnern: /System/Library/Frameworks/Python.framework/Versions/2.5 und /Library/Frameworks/Python.framework/Versions/2.6

ich in ein ähnliches Problem ausgeführt wurde, als pycairo 1.8.8 aus dem Tarball kompilieren. Die Datei INSTALL ist in diesem Fall Ihr Freund, da sie die richtigen Anweisungen enthält, um mögliche Versionskonflikte zu vermeiden. Sie müssen im Grunde das korrekte Präfix angeben, damit das Paket im richtigen Ordner installiert wird.

 
$ python -c "import sys; print sys.prefix" 
    # make a note of the python prefix 
$ ./configure --prefix=[python_prefix] 
$ make 
$ make install  # may require superuser access 

Ausführung dieser Anweisungen mit python2.5 und python Sie in der Lage, richtig pycairo für beide Versionen (oder für jede Version über MacPorts/Fink installiert ist) zu installieren.

8

Ich fand this Anweisung sehr hilfreich und viel weniger verwirrend. Ich bin auf Yosemite und es hat sehr gut für mich gearbeitet. Diese Anleitung verwendet Homebrew zur Installation. Also, wenn Sie bereits Homebrew haben, sollten diese beiden Befehle hilfreich sein:

$ brew install cairo --use-clang 
$ brew install py2cairo 

Für eine nicht-Homebrew installiert Python diese Anweisung schlagen die PYTHONPATH einstellen pycairo zu finden. Sie können Ihren PYTHONPATH in Ihrer .bashrc/.profile/festlegen.was auch immer das Folgende:

Ich persönlich brauchte diesen letzten Teil der Anweisung nicht zu verwenden, aber es könnte Ihnen helfen.

+0

Antworten, die nur Links enthalten, werden [als schlechte Praxis angesehen] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really- good-answers). Bitte fassen Sie den Inhalt hier zusammen (nicht kopieren/einfügen), damit die Antwort für sich alleine stehen kann. Wenn Sie nicht Gefahr laufen, dass Ihre Antwort entfernt wird, besonders wenn die Verbindung jemals stirbt. –

+0

Wenn Sie Python 3 verwenden, können Sie stattdessen "brew install py3cairo" verwenden. –