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

2024-05-15 16:14:11 发布

您现在位置:Python中文网/ 问答频道 /正文

原始邮件(现已过期):

在运行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

对于任何知道后端web编程第一件事的人来说,这里可能有一些惊人的显而易见的东西,但不幸的是,对我来说,这一切都是一纸空文。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:我以为macports安装已经成功,但当我尝试运行站点时,它以以下错误结束:

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

所以我想这意味着psycopg2毕竟没有正确安装。所以我回到原点。


Tags: installtopy错误setuppsycopg2gccmodule
3条回答

有关您更新的问题,请参见下面的编辑内容

您的计算机上没有“gcc4.0”编译器可执行文件,或者没有正确的版本,或者安装在python找不到/使用不到的位置。XCode/Developer工具(它include GCC)应该放在原来的OSX安装dvd上。

既然你谦虚到可以称自己为菜鸟,这里有一块智慧的金块。。。解决此错误实际上与后端web开发无关,因为问题出在您的本地开发环境(您的计算机以及配置和安装的所有软件)。我有最好的技巧来破译像这样的狼吞虎咽的书,就是开始搜索你从未听说过的东西的关键字。如果我站在你的立场上,这个错误信息会让我尖叫“去看看到底是什么gcc4.0。然后,当我知道它是什么,它做什么,以及python为什么需要它时,我就会弄明白python为什么在我的计算机上找不到它,然后我就做了些什么,“解决这些问题的满足感并不是每个人都会发生的,不过,这是肯定的。

所有这些问题的答案是:psycopg2是一个用C语言编写的python扩展。很多python的扩展都是用C编写的,而不是python,因为C比python要优化得多。实际上,python解释器本身就是这样写的。C语言代码在可用之前必须先编译好(不像python代码,python代码的解释是gcc4.0)。现在,如果您使用的是Windows或Linux,那么psycopg2的编译版本可能已经可用,而且您不需要安装GCC,因为您不必编译它来使用它(它已经为您编译好了)。但是,似乎您必须自己在OSX上编译它,为此,您需要在系统路径中提供程序“gcc4.0”,以便您试图运行的安装脚本能够找到并使用它。在OS X上,您可以从电脑附带的原始安装DVD中获取。将它们弹出到驱动器中,并找到开发人员工具安装程序。一旦安装了gcc4.0编译器,您就应该能够通过尝试在任何控制台窗口中运行命令“gcc4.0”来检查是否安装了gcc4.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可执行文件。

让我们了解你的最新进展!

如果您已经从企业数据库安装了postgres,那么您可能只想

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

或者类似的-取决于你的版本。

如果它抱怨

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

然后它不喜欢您的新gcc-您可以覆盖您的gcc来强制它使用gcc4.0,方法是:

alias gcc=/usr/bin/gcc-4.0

然后重新运行easy_安装程序。

我觉得你让事情变得更难了。与其直接运行setup.py,我建议让MacPorts为您执行以下操作:

sudo port install py26-psycopg2

相关问题 更多 >