为什么我不能安装psycopg2?(Python 2.6.4,PostgreSQL 8.4,OS X 10.6.3)

3 投票
5 回答
10985 浏览
提问于 2025-04-15 23:53

原始信息(现在已经过时):

在我运行 python setup.py install 之后,出现了以下内容:

Warning: Unable to find 'pg_config' filebuilding 'psycopg2._psycopg' extension
gcc-4.0 -arch ppc -arch i386 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -   DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.2.1 (dt dec ext pq3)" -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -DHAVE_PQPROTOCOL3=1 -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -I. -c psycopg/psycopgmodule.c -o build/temp.macosx-10.3-fat-2.6/psycopg/psycopgmodule.o
unable to execute gcc-4.0: No such file or directory
error: command 'gcc-4.0' failed with exit status 1

对于任何懂后端网页编程的人来说,这里可能有一些显而易见的问题,但对我来说,这些都是天书。psycopg2 的文档也没有提供帮助。


更新 6月12日早上:在更新了所有软件后,错误信息发生了变化。

现在,当我运行 "python setup.py install" 时,出现了以下内容:

Warning: Unable to find 'pg_config' filebuilding 'psycopg2._psycopg' extension
gcc-4.0 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.2.1 (dt dec ext pq3)" -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -DHAVE_PQPROTOCOL3=1 -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -I. -c psycopg/psycopgmodule.c -o build/temp.macosx-10.3-fat-2.6/psycopg/psycopgmodule.o

后面跟着一长串其他错误信息。

可能与此相关的是,当我在终端输入 "gcc-4.0" 时,返回了:

i686-apple-darwin10-gcc-4.0.1: no input files

更新 6月12日 12:41 GMT:我以为 macports 的安装成功了,但当我尝试运行一个网站时,结果出现了以下错误:

raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

所以我想这意味着 psycopg2 其实没有正确安装。看来我又回到了最开始的状态。

5 个回答

4

如果你是从Enterprise DB安装的Postgres,你可能只想要

export PATH=$PATH:/Library/PostgreSQL/8.4/bin

或者类似的命令,这取决于你安装的版本。

如果它提示你有问题,

cc1: error: unrecognized command line option "-Wno-long-double"

那说明它不喜欢你新版本的gcc。你可以通过以下方式强制它使用gcc4.0:

alias gcc=/usr/bin/gcc-4.0

然后再重新运行你的easy_install命令。

8

(请查看下面的编辑以获取更新的问题)

你的电脑上没有“gcc4.0”这个编译器,或者版本不对,或者安装在了Python找不到的地方。XCode/开发工具(包括GCC)应该在你最初的OSX安装光盘上。

既然你谦虚地称自己为新手,这里有个小建议……解决这个错误其实和后端网页开发没有关系,问题出在你的本地开发环境(也就是你的电脑和所有配置好的软件)。我给你最好的建议就是开始在网上搜索一些你从未听说过的关键词。如果我是你,看到这个错误信息我会想:“去了解一下gcc4.0到底是什么。”然后,当我知道它是什么、有什么用,以及为什么Python需要它时,我就能搞清楚为什么Python在我的电脑上找不到它,然后再想办法解决这个问题。不过,解决这些问题的满足感并不是每个人都能体验到的,这一点是肯定的。

所有这些问题的答案是:psycopg2是一个用C语言编写的Python扩展。很多Python的扩展都是用C写的,而不是用Python,因为C的性能比Python要好得多。实际上,Python解释器本身也是用C语言写的。C语言的代码在使用之前必须要经过编译(而Python代码是解释的),在这种情况下,你需要的编译器就是gcc4.0。也许如果你使用的是Windows或Linux,psycopg2的编译版本可能已经可用了,你就不需要安装GCC,因为你不需要自己编译(它已经为你编译好了)。但是,看起来你需要在OS X上自己编译,而要做到这一点,你需要确保“gcc4.0”这个程序在系统的路径中,这样你正在运行的安装脚本才能找到并使用它。在OS X上,你可以从电脑随附的原始安装光盘中获取它。把光盘放入驱动器,找到开发工具的安装程序。安装完成后,你可以在任何控制台窗口中运行“gcc4.0”命令,检查GCC 4.0编译器是否已安装,并且在你的路径中。

编辑以更新你的情况

看起来你现在已经成功安装了GCC 4.0编译器!干得不错。当你看到这个:

>gcc4.0
i686-apple-darwin10-gcc-4.0.1: no input files

这个输出是编译器告诉你它的确切版本,然后告诉你你没有给它任何参数,所以它不会为你做任何事情。这没关系,因为你的psycopg2安装脚本会调用它,而不是你直接调用。

接下来,看起来psycopg2还希望你安装PostgreSQL服务器的开发库。既然我看到你现在在使用MacPorts,你应该可以用这个命令轻松安装这些库:

sudo port install postgresql-server-devel

这应该能让你得到安装脚本所需的缺失的pg_config可执行文件。

请随时更新你的进展情况!

3

我觉得你把事情搞得太复杂了。与其直接运行setup.py,不如让MacPorts来帮你处理:

sudo port install py26-psycopg2

撰写回答