我正在关注Heroku的教程来部署Django应用程序:http://devcenter.heroku.com/articles/django#prerequisites。
一切正常,直到我到达这一部分:
$ pip install Django psycopg2
我可以自己安装Django,但问题在于psycopg2。
我一直收到这个错误:
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
我在我的机器上安装了PostgreSQL 9.1。
另外,在输出中,有很多这样的行:
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
我不确定这意味着什么,但我注意到它里面有“macosx-10.6”,所以我想知道这可能是问题吗?我在10.7。
提前感谢您的帮助。
答案 0 :(得分:25)
首先,下载Postgres.app
。
然后,在运行pip install psycopg2
之前,将二进制文件放在路径中:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin
<强>注意强>:
9.3
代表版本,会随着时间的推移而有所不同。
答案 1 :(得分:25)
只想分享。以下代码对我有用:
env LDFLAGS='-L/usr/local/lib -L/usr/local/opt/openssl/lib
-L/usr/local/opt/readline/lib' pip install psycopg2==2.5.2
我正在使用macOS Sierra和psql 9.6.1。
我从pg_config
命令获得了lib路径。
答案 2 :(得分:17)
我正在将 MAC OS CATALINA 版本 10.15.5 与 python3 和 psql(PostgreSQL)12.3 一起使用。这是对我有用的东西:
尝试使用brew安装openssl
brew install openssl
之后,将这些变量导出到终端中。
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
验证这些变量已由echo $LDFLAGS
导出,然后您可以通过键入psycopg2进行安装
pip3 install psycopg2
答案 3 :(得分:7)
只需在安装LDFLAGS之前将其导出,这是通用命令,该命令适用于OS X(我相信任何具有相同错误的LINUX系统):
LDFLAGS=`echo $(pg_config --ldflags)` pip install psycopg2
答案 4 :(得分:5)
Install postgres
with brew
:
brew install postgres
Then, in your virtualenv install psycopg2
with this command:
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2
答案 5 :(得分:4)
请参阅psycopg的official installation guide:
在Mac OS X上安装作为第一选择,请考虑使用 来自Fink或MacPorts的Psycopg的打包版本。
如果您仍想从源代码构建Psycopg,请查看these 制品
答案 6 :(得分:1)
我尝试了很多事情,但没有任何效果。但是,如果您在Mojave上使用Xcode CLI工具,并且在安装psycopg2时遇到问题,请尝试以下命令,然后再次尝试安装psycopg2。
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
这被描述为莫哈韦沙漠问题:Pillowissue
就我而言,这解决了问题。
答案 7 :(得分:0)
专注于这一行:ld:找不到-lpq的库
像大多数第三方postgres库一样,psycopg2希望你的路径中有'pg_config'。我猜测这是你的问题。在命令提示符下键入“pg_config”。我希望你看到它没有找到。如果没有,请执行:
sudo find / -name pg_config
找到它的位置,然后将该位置添加到路径中,运行'pg_config'并查看它是否成功,然后最后重新运行pip。
find命令从你的根目录开始搜索; 需要几分钟。
答案 8 :(得分:0)
以下帖子帮我搞定了:
https://stackoverflow.com/a/10326004/1361851
不得不为Xcode安装“命令行工具”,然后我就可以像使用heroku教程一样使用virtualenv进行安装。
答案 9 :(得分:0)
我尝试了上述所有解决方案,但解决这个问题的唯一方法就是通过官方App Store更新Xcode CLI实用程序。
答案 10 :(得分:0)
解决方法是安装“ psycopg2-binary”软件包
答案 11 :(得分:0)
尝试一下:
pip install psycopg2-binary
答案 12 :(得分:0)
首先是这个:
pip install psycopg2-binary
接着:
pip install psycopg2
有效。
答案 13 :(得分:-1)
一旦我在Mac上也遇到了同样的问题,那么我发现psycopg2依赖于GCC库。
export LDFLAGS =“-L / usr / local / opt / openssl / lib”
export CPPFLAGS =“-I / usr / local / opt / openssl / include”
只需运行此命令,然后尝试运行
pip安装psycopg2
希望这会起作用。