2012-03-13 9 views
19

Sto seguendo il tutorial di Heroku per distribuire un'applicazione Django: http://devcenter.heroku.com/articles/django#prerequisites.Impossibile installare psycopg2 con pip in virtualenv su Mac OS X 10.7

Tutto sta funzionando benissimo fino a ottenere a questa parte:

$ pip install Django psycopg2 

posso installare Django di per sé, ma il problema soltanto è con psycopg2.

Continuo a ricevere questo errore:

ld: library not found for -lpq 

collect2: ld returned 1 exit status 

ld: library not found for -lpq 

collect2: ld returned 1 exit status 

lipo: can't open input file: /var/folders/_4/p6l0y0t51hd4xbq7llbyshmw0000gn/T//cc0L10mI.out (No such file or directory) 

error: command 'gcc-4.2' failed with exit status 1 

Ho installato PostgreSQL 9.1 sulla mia macchina.

Inoltre, in uscita, ci sono serie di righe come questa:

gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.4.4 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x090004 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I. -I/usr/include -I/usr/include/postgresql/server -c psycopg/typecast.c -o build/temp.macosx-10.6-intel-2.7/psycopg/typecast.o 

Io non sono davvero sicuro che cosa significa, ma si nota che ha "MacOSX-10.6" in modo Mi chiedo se questo potrebbe essere il problema? Sono al 10.7.

Grazie in anticipo per il vostro aiuto.

risposta

4

Fare riferimento al official installation guide di psycopg:

Installing on Mac OS X As a first option, please consider using a packaged version of Psycopg from Fink or MacPorts.

If you still want to build Psycopg from source, take a look at these articles.

+0

Ok, ho appena installato psycopg2 usando macports nel virtualenv. Immagino che questo faccia la stessa cosa che installa pip nel tutorial? Come in, vorrei solo sostituire questo passaggio? Il motivo che sto chiedendo è perché l'app non funziona ancora quando la lancio. Quando digito Heroku Logs, questa è una delle righe che ottengo: 'raise ImproperlyConfigured (" Errore nel caricamento del modulo psycopg2:% s "% e)' – WarAndPiece

+0

L'uso di MacPorts per l'installazione non funzionerà in un ambiente virtualenv. Per far funzionare la tua app, dovresti dare un'occhiata a quegli articoli sulla costruzione dalla fonte :) –

+0

Ok, ho seguito le istruzioni in uno di questi articoli: http://blog.timc3.com/2010/08/20/psycopg2-os -x-_pqbackendpid /, e ho psycopg2 da installare sulla mia macchina. Tuttavia, sto ancora ricevendo lo stesso errore nell'ambiente virtualenv. Non sono troppo sicuro di come potrei costruire dalla fonte all'interno di una virtualizzazione. – WarAndPiece

0

Concentrandosi su questa linea: ld: libreria non trovata per -lpq

psycopg2, come la maggior parte delle librerie Postgres 3rd-party, vuole 'pg_config' disponibile nel tuo percorso. Sono indovinando questo è il tuo problema.

Digitare "pg_config" al prompt dei comandi. Spero che tu veda che non è stato trovato. In caso contrario, fare un:

sudo find/-name pg_config

per trovare dove sta, e quindi aggiungere tale posizione per il vostro percorso, eseguire 'pg_config' e vederlo avere successo, e poi finalmente, ri- eseguire pip.

il comando di ricerca sta cercando a partire dalla directory principale; ci vorranno alcuni minuti.

+0

hey, grazie per la risposta. tuttavia, quando digito "pg_config", viene trovato e non c'è un problema. – WarAndPiece

24

Innanzitutto scaricare Postgres.app.

Poi, prima di correre pip install psycopg2, mettere il binario nel vostro percorso:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin 

AVVISO:

9.3 stand per la versione e sarà diverso nel corso del tempo.

+0

Grazie, ho trovato questa risposta molto utile, in quanto non richiede MacPorts o altri strumenti. – goetz

+0

Questo non funziona per me. – Konrad

5

Installare postgres con brew:

brew install postgres 

Poi, nel vostro virtualenv installare psycopg2 con questo comando:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2 
7

Proprio vorrei condividere. Il seguente codice ha funzionato per me:

env LDFLAGS='-L/usr/local/lib -L/usr/local/opt/openssl/lib 
-L/usr/local/opt/readline/lib' pip install psycopg2==2.5.2 

Sto usando macOS Sierra e psql 9.6.1.

Ho ottenuto il percorso di lib dal comando pg_config.

+0

questa è stata la tua prima risposta a SO, e funziona benissimo. Grazie per aver dedicato del tempo per metterlo qui. Questa soluzione funziona per installare psycopg2 all'interno di un 'virtualenv' con postgres e dipendenze installate con' brew'. –

0

Ho provato tutte le soluzioni di cui sopra ma l'unica cosa che ha risolto il problema per me è semplicemente l'aggiornamento delle utility Xcode CLI attraverso l'App Store ufficiale.