在 Mac OS X 10.7上无法在 Virtual alenv 中使用 pip 安装 Psycopg2

我遵循 Heroku 的教程来部署一个 Django 应用程序: http://devcenter.heroku.com/articles/django#prerequisites

一切正常,直到我说到这里:

$ pip install Django psycopg2

我可以自己安装姜戈,但问题在于心理战2。

我一直得到这个错误:

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。

先谢谢你的帮助。

53185 次浏览

主要关注这一行: ld: library not found for-lpq

Psycopg2和大多数第三方 postgres 库一样,希望在路径中使用“ pg _ config”,我是 猜的,这就是问题所在。

在命令提示符下输入‘ pg _ config’。我希望你看到没有找到它。如果没有,执行:

Sudo find/-name pg _ config

为了找到它的位置,然后将该位置添加到路径中,运行‘ pg _ config’并看到它成功,最后重新运行 pip。

Find 命令从根目录开始搜索; 这将花费几分钟

请参阅心理学家的 正式的安装指南:

在 Mac OS X 上安装作为第一个选项,请考虑使用 来自 Fink 或 MacPorts 的 Psycopg 打包版本

如果你仍然想从源代码构建 Psycopg,看看这些 物品。

下面的帖子帮助我让它运转起来:

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

必须为 Xcode 安装“命令行工具”,然后我就可以使用与 heroku 教程相同的 viralenv 进行 pip 安装。

首先,下载 Postgres.app

然后,在运行 pip install psycopg2之前,将二进制文件放在路径中:

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

注意:

9.3代表版本,随着时间的推移会有所不同。

使用 brew安装 postgres:

brew install postgres

然后,使用以下命令在 viralenv 中安装 psycopg2:

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

只是想分享。以下代码对我有效:

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

我使用的是 macOSSierra 和 psql9.6.1。

我从 pg_config命令获得了 lib 路径。

我尝试了以上所有的解决方案,但是对我来说唯一解决问题的方法是通过官方的 App Store 更新 Xcode CLI 实用程序。

解决方案是安装“ Psycopg2-binary”软件包

我尝试了很多方法,但都没用。但是,如果您在 Mojave 上使用 Xcode CLI Tools,并且在安装 Psycopg2时遇到问题,请尝试以下命令并再次尝试安装 Psycopg2。

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

这被描述为莫哈韦沙漠问题: 枕头套

对我来说,这解决了问题。

有一次我在 Mac 上也遇到了同样的问题,然后我发现 Psycopg2依赖于 GCC 库。

Export LDFLAGS = “-L/usr/local/opt/openssl/lib”

Export CPPFLAGS = “-I/usr/local/opt/openssl/include”

只要运行这个命令,然后尝试运行

皮普安装精神病人2

希望能成功。

通用 LDFLAGS 变量集

只要在安装 LDFLAGS 之前导出它,这里有一个适用于 OS X 的通用命令(我相信任何 LINUX 系统都有相同的错误) :

 LDFLAGS="$(pg_config --ldflags)" pip install psycopg2

我使用的是 MAC OS CATALINA版本 10.15.5蟒蛇3Psql (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导出,然后输入

pip3 install psycopg2

试试这个:

pip install psycopg2-binary

首先: pip install psycopg2-binary 然后: pip install psycopg2成功了。