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

问题描述:

我在使用Heroku的教程来部署Django应用程序:http://devcenter.heroku.com/articles/django#prerequisites无法在Mac OS X上使用pip在virtualenv中安装psycopg2 10.7

一切工作正常,直到我到了这个部分:

$ 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。

在此先感谢您的帮助。

参考official installation guide psycopg的:

Installing on Mac OS X As a first option, please consider using a packaged version of Psycopg from Fink or MacPorts.

If you still want to build Psycopg from source, take a look at these articles.

+0

好的,我刚刚在virtualenv中使用macports安装了psycopg2。我猜这与pip安装在教程中做的是一样的吗?如在,我只是取代这一步?我问的原因是因为该应用在我启动时仍然失败。当我输入Heroku Logs时,这是我得到的一行:'raise improperlyconfigured(“Error加载psycopg2模块:%s”%e)' – WarAndPiece 2012-03-13 06:08:33

+0

使用MacPorts安装在virtualenv环境中不起作用。为了让你的应用程序工作,你应该看看那些关于从源代码构建的文章:) – 2012-03-13 06:11:18

+0

好吧,我按照其中一篇文章中的说明操作:http://blog.timc3.com/2010/08/20/psycopg2-os -x-_pqbackendpid /,并且我的psycopg2安装在我的机器上。但是,我仍然在virtualenv环境中遇到同样的错误。我不太确定在virtualenv中如何从源代码构建。 – WarAndPiece 2012-03-13 07:04:27

关注这一行:LD:库找不到-lpq

psycopg2,最喜欢的第三方的Postgres库,希望“pg_config”可在你的路径。我是猜测这就是你的问题。

在命令提示符处键入'pg_config'。我希望你看到它没有被发现。如果没有,做了:

须藤查找/ -name pg_config

找到那里的AT,然后添加位置到您的路径,运行“pg_config”,看看它成功,最后,再运行点子。

find命令正在从您的根目录开始搜索;这将需要几分钟的时间

+0

嘿,谢谢你的回应。然而,当我输入'pg_config'时,发现它并没有问题。 – WarAndPiece 2012-03-13 05:43:21

以下后帮我得到它的工作:

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

必须安装 “命令行工具” 的Xcode的,然后我就能够使用virtualenv来安装,就像heroku教程一样。

首先,下载Postgres.app

然后,运行pip install psycopg2前,把二进制在你的路径:

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

注意

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

+0

谢谢,我发现这个回复最有用,因为它不需要MacPorts或任何其他工具。 – goetz 2016-02-14 10:07:58

+0

这对我不起作用。 – Konrad 2016-11-05 13:37:24

安装postgresbrew

brew install postgres 

然后,在你的virtualenv安装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 

我正在使用macOS Sierra和psql 9.6.1。

我得到了从pg_config命令的lib路径。

+0

这是你的第一个答案,它很好。感谢您花时间把它放在这里。这个解决方案可以将psycopg2安装在'virtualenv'中,并通过'brew'安装postgres和dependencies。 – 2017-02-17 14:44:36

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