web-dev-qa-db-fra.com

Impossible d'installer psycopg2 avec pip dans virtualenv sur Mac OS X 10.7

Je suis le tutoriel de Heroku pour déployer une application Django: http://devcenter.heroku.com/articles/Django#prerequisites .

Tout fonctionne bien jusqu'à ce que j'arrive à cette partie:

$ pip install Django psycopg2

Je peux installer Django par lui-même, mais le problème est avec psycopg2.

Je reçois toujours cette erreur:

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

J'ai installé PostgreSQL 9.1 sur ma machine.

De plus, dans la sortie, il y a un tas de lignes comme ceci:

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

Je ne suis pas vraiment sûr de ce que cela signifie, mais je remarque qu'il contient "macosx-10.6", donc je me demande si cela pourrait être le problème? Je suis sur 10,7.

Merci d'avance pour votre aide.

31
WarAndPiece

Reportez-vous à guide d'installation officiel de psycopg:

Installation sur Mac OS X Comme première option, veuillez envisager d'utiliser une version packagée de Psycopg de Fink ou MacPorts.

Si vous voulez toujours construire Psycopg à partir des sources, jetez un œil aux articles these .

6
Felix Yan

Je voudrais juste partager. Le code suivant a fonctionné pour moi:

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

J'utilise macOS Sierra et psql 9.6.1.

J'ai obtenu le chemin de la lib du pg_config commande.

76
chuan

Tout d'abord, téléchargez Postgres.app .

Ensuite, avant d'exécuter pip install psycopg2, mettez le binaire sur votre chemin:

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

[~ # ~] remarquez [~ # ~] :

9.3 représente la version et variera au fil du temps.

25
andilabs

Installez postgres avec brew:

brew install postgres

Ensuite, dans votre installation virtualenv psycopg2 avec cette commande:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2
6
Hernan Ramirez

J'essayais tellement de choses et rien n'a fonctionné. Cependant, si vous utilisez les outils CLI Xcode sur Mojave et que vous rencontrez un problème lors de l'installation de psycopg2, essayez la commande suivante et essayez de réinstaller psycopg2.

Sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

Cela a été décrit comme un problème Mojave: Pillowissue

Dans mon cas, cela a résolu le problème.

1

La solution de contournement consiste à installer le package "psycopg2-binary"

1
Alex Yavorskiy

J'ai essayé toutes les solutions ci-dessus, mais la seule chose qui a résolu le problème pour moi est simplement de mettre à jour les utilitaires Xcode CLI via l'App Store officiel.

0
henrycjc

Le message suivant m'a aidé à le faire fonctionner:

https://stackoverflow.com/a/10326004/1361851

J'ai dû installer des "outils de ligne de commande" pour Xcode et j'ai pu installer l'installation avec virtualenv de la même manière que le tutoriel heroku.

0
emispowder

En se concentrant sur cette ligne: ld: bibliothèque introuvable pour -lpq

psycopg2, comme la plupart des bibliothèques postgres tierces, veut que 'pg_config' soit disponible sur votre chemin. Je suis deviner c'est votre problème.

Tapez 'pg_config' à l'invite de commande. J'espère que vous voyez qu'il n'est pas trouvé. Sinon, faites:

Sudo find/-name pg_config

pour trouver où il se trouve, puis ajouter cet emplacement à votre chemin, exécutez 'pg_config' et voyez-le réussir, puis enfin réexécutez pip.

la commande find recherche à partir de votre répertoire racine; cela prendra quelques minutes.

0
sethcall