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.
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 .
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.
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.
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
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.
La solution de contournement consiste à installer le package "psycopg2-binary"
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.
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.
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.