在Mac OS X 10.7上无法在virtualenv中使用pip安装psycopg2

时间:2012-03-13 04:32:10

标签: python django heroku pip psycopg2

我正在关注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。

提前感谢您的帮助。

14 个答案:

答案 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变量集

只需在安装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

希望这会起作用。