2009-09-30 14 views
11

Sto tentando di installare pycairo (collegamenti Python per cairo graphics library) in OSX.Come installare pycairo su osx?

Ho iniziato con

easy_install pycairo 

e ottenuto:

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 

Così sono andato al sito di Cairo e scaricato il pacchetto più recente (1.8.8) del Cairo, e anche l'ultimo pacchetto di qualcosa chiamato pixman (entrambi i pacchetti sorgente - impossibile trovare i binari di OSX)

entrambi decompressi, ciascuno nella propria directory. per pixman, il regolare ./configure ; make ; sudo make install lavorato solo trovare per cairo, ./configure sembrava funzionare, ma fare non riuscita con:

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

Che cosa sto facendo di sbagliato?

E perché devo faticare così tanto per far funzionare una libreria software su un sistema operativo che "funziona"? Perché non è Darwin più simile a Linux?

+0

Aggiornamento: Ho copiato tutti i file .h dalla directory di pixman a cairo. Una brutta cosa bruta-forza, ma sembrava funzionare: 'make; sudo make install 'sembra funzionare bene. Ho ancora "richiesto" cairo> = 1.8.8 "ma la versione di cairo è 1.0.4" quando provo a installare pycairo, però. Pensa che ho cairo 1.0.4, e ignora il nuovo. Qualche idea del perché? Come posso aggiustarlo? – Yoav

risposta

6

Ok. L'ho risolto. Mettendo la soluzione qui per riferimento futuro, potrebbe aiutare qualcuno.

Fondamentalmente, l'intero sistema ports/fink è un po 'incasinato, e osx non funziona molto bene con il mondo linux-y.

Quindi, i passi che avevo bisogno di installare pycairo su OSX sono stati:

  • scaricare le ultime versioni di origine di pixman, cairo, pycairo
  • estrarre tutto. Quindi:

    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 
    

    speriamo che vengano restituite diverse posizioni. scegli la più probabile (una con il cairo più recente). Per me è stato "/opt/local/lib/pkgconfig/cairo.pc" e fare:

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

    dopo questo, ancora in PYCAIRO_DIR, fare:

    python setup.py install 
    

Questo dovrebbe fare it ...

+1

Penso che tu abbia problemi perché stai mescolando macports fink e il tuo codice insieme - usa solo uno di questi;) in modo efficace ognuno di questi è equivalente al sistema di packaging di Linix. La ragione per cui dico che/opt/local/bin sarebbe da Macports e non dal proprio codice che di default sarebbe/usr/local/bin – Mark

3

Il comando port installa la libreria per l'installazione pywin di darwinports, che è diversa dalla build del framework (quindi i passaggi 2 e 3 non dovrebbero funzionare). Prova invece a sudo easy_install pycairo (anche se il tuo passo 4 dovrebbe essere equivalente a questo).

Guarda anche which python, per verificare che stai effettivamente eseguendo il pitone che pensi di essere.

+0

Qui (http://stackoverflow.com/questions/1500866/ how-to-install-pycairo-on-osx) è un'altra persona con un problema simile –

+0

Se non si presta attenzione, l'uso di easy_install come tale potrebbe complicare ulteriormente le cose portando il pitone fornito da Apple nell'immagine e non aiuterà risolvi il problema alla radice –

+0

Ho portato Akusete a dire che voleva usare pycairo dal suo build di framework Python2.6.4 (il suo passo 1). Se riesce a farlo funzionare, potrebbe abbandonare tutto il materiale Python di MacPorts ed evitare questo problema in futuro. Ma anche la tua soluzione MacPorts è buona. C'è qualche ragione per preferirlo? –

7

Sembra che si stiano mescolando varie opzioni di installazione. Il comando del sistema di pacchetto MacPorts port install dovrebbe inserire automaticamente tutte le dipendenze necessarie per un particolare pacchetto, quindi il trucco è iniziare con il progetto di livello superiore corretto. Per i pacchetti Python, MacPorts ha una convenzione generale al momento: i pacchetti che iniziano con py- sono per python 2.4, quelli con py25- sono per 2.5 e py26- per 2.6. Al momento sono disponibili i pacchetti py-cairo, py25-cairo e py26-cairo in MacPorts.

Scegliendo py-cairo hai scelto la versione python2.4 e probabilmente scoprirete che MacPorts costruito ed installato un python2.4 per voi (collegato a /opt/local/bin/python2.4) e, se lo lanciate, probabilmente scoprirete che si posso importare cairo lì. Ora che può essere essere OK per le tue esigenze ma Python 2.4 è piuttosto vecchio e non è più supportato così, se stai iniziando, potrebbe essere meglio iniziare con Python 2.6, una delle due versioni correnti di Python. Per fare ciò, tutto cio che dovrete fare è:

sudo port install py26-cairo 

che dovrebbe portare in tutte le dipendenze mancanti, soprattutto la python2.6 MacPorts, che è possibile eseguire da /opt/local/bin/python2.6. Potresti voler cambiare il tuo $PATH nello script di avvio della shell, probabilmente .bash_profile, per inserire /opt/local/bin all'inizio del percorso di ricerca.

Perché l'installazione di Cairo e dei relativi collegamenti Python sembra essere piuttosto complessa, dovrebbe essere più semplice e meglio attenersi all'utilizzo di una soluzione MacPorts completa per questo. Ciò significa che hai inutilmente (e innocuo) installato un paio di istanze Python di cui non avrai bisogno. Ma se si vuole pulire le cose un po ', si può facilmente rimuovere la Python24 MacPorts con:

sudo port uninstall py-cairo python24 

rimuovere completamente il python.org installato pitone è più complicato. Ho spiegato il processo here. Ma non vi è alcuna necessità urgente di rimuoverli finché si mantengono dritti i percorsi.

+0

Ho provato il tuo suggerimento e ha funzionato correttamente. Grazie mille. Penso che il mio problema principale fosse che non sono a conoscenza dei meccanismi e delle convenzioni dei mac e dei maco in generale. Ho letto le introduzioni di macports e la documentazione da macports.org ma non ho mai realizzato che il numero di versione fosse usato nel titolo (ho pensato che fosse usato in qualche modo per l'ultima versione o qualcosa del genere) – Akusete

+0

Sì, la convenzione di denominazione di Python per MacPorts è piuttosto confusa . Se avessero iniziato usando py24- invece di py-, potrebbe essere meno. Lieto che tutto abbia funzionato! –

+0

Come si ottiene 'cairo.HAS_QUARTZ_SURFACE' per ottenere 1? – vy32

2

Su Mac OS è possibile installare più versioni di Python. Puoi avere ancora di più se decidi di installare Python tramite Fink o MacPorts. Quando si compilano le librerie dal sorgente, è necessario assicurarsi che puntino all'installazione corretta.

Attualmente sul mio computer sono installati Python 2.5.1 e Python 2.6.4, che posso chiamare rispettivamente tramite python2.5 e python. Vivono in due diverse cartelle: /System/Library/Frameworks/Python.framework/Versions/2.5 e /Library/Frameworks/Python.framework/Versions/2.6

stavo correndo in un problema simile quando si compila pycairo 1.8.8 dal tarball. Il file INSTALL in questo caso è tuo amico, poiché contiene le istruzioni corrette per evitare potenziali conflitti di versione. Fondamentalmente è necessario specificare il prefisso corretto in modo che il pacchetto venga installato nella cartella corretta.

 
$ 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 

esecuzione di queste istruzioni con python2.5 e python si sarà in grado di installare correttamente pycairo per entrambe le versioni (o per qualsiasi versione installata tramite MacPorts/Fink).

8

Ho trovato l'istruzione this molto utile e molto meno confusa. Sono su Yosemite e ha funzionato molto bene per me. Questa istruzione utilizza homebrew per l'installazione. Quindi, se si dispone già di homebrew, questi due comandi devono essere utili:

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

per un non-Homebrew installato Python, questa istruzione suggerisce di impostare la PYTHONPATH per trovare pycairo. Puoi impostare il tuo PYTHONPATH nel tuo .bashrc/.profile /.qualunque cosa al seguente:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH. 

Personalmente non ho avuto bisogno di usare questa ultima parte dell'istruzione ma potrebbe aiutarti.

+0

Le risposte che contengono solo collegamenti sono [considerate pratiche sbagliate] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Si prega di riassumere il contenuto qui (non copiare/incollare) in modo che la risposta possa reggersi da sola. Se non lo fai, corri il rischio che la tua risposta venga rimossa, soprattutto se il collegamento muore mai. –

+0

Se si utilizza python 3, è possibile utilizzare "brew install py3cairo". –