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

时间:2010-06-12 16:10:09

标签: python macos postgresql psycopg2

原始讯息(现已过时):

运行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:我认为macports安装有效,但是当我尝试运行网站时,它结束时出现以下错误:

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

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

5 个答案:

答案 0 :(得分:8)

请参阅下面的编辑了解更新的问题

您的计算机或版本上没有“gcc4.0”编译器可执行文件,或者安装在python无法找到/使​​用的位置。 XCode /开发人员工具(include GCC)应该在您的原始OSX安装DVD上。

因为你很谦虚地称自己为新手,所以这是一个智慧的核心......解决这个错误实际上与后端Web开发没有任何关系,因为它是你的本地开发环境(你的机器和所有配置和安装的软件就是问题所在。我这样解读gobbledegook的最佳提示就是开始使用谷歌搜索关键字来解决之前从未听过的事情。如果我在你的鞋子里,这个错误信息尖叫给我“去找出gck4.0到底是什么。然后,当我知道它是什么以及它做了什么,以及为什么python需要它,那么我想出为什么python在我的电脑上找不到它,然后我就它做了些什么。“然而,解决这些问题的满意度并非适用于所有人,这是肯定的。

所有这些问题的答案是:psycopg2是一个用C语言编写的python扩展。 python的很多扩展都是用C语言编写的,而不是python,因为C比python更加优化。实际上,这就是python解释器本身所写的内容。 C语言代码在可用之前必须编译(不像python代码,解释),在这种情况下,你需要的编译器是gcc4.0。现在,也许如果您使用的是Windows或Linux,psycopg2的编译版本可能已经可用,并且您不需要安装GCC,因为您不必编译它来使用它(它将被编译为已经用于您)。但是,似乎你必须自己在OS X上编译它,为此,你需要在系统PATH中使用程序“gcc4.0”,以便你试图运行的安装脚本可以找到并使用它。在OS X上,您可以从计算机附带的原始安装DVD中获取它。将它们弹出驱动器并找到Developer Tools安装程序。安装完成后,您应该可以通过尝试在任何控制台窗口中运行命令“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可执行文件。

让我们了解您的进度!

答案 1 :(得分:4)

如果您已经从Enterprise DB安装了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_install。

答案 2 :(得分:3)

我认为你让它变得更难。我建议不要直接运行setup.py,而是让MacPorts为你做这件事:

sudo port install py26-psycopg2

答案 3 :(得分:2)

我确信我们都讨厌忽视“惊人的明显”,所以在开始安装新编译器之前,或许值得检查一下。在这种情况下,可能是PostgreSQL没有安装在人的Mac上。因此psycopg2找不到该数据库的较新版本附带的'pg_config'程序,导致发出警告消息“无法找到'pg_config'”。

因此,在使用新的编译器或开发人员工具链的任何其他部分之前,首先检查并查看是否安装了PostgreSQL。如果你这样做,那么找到'pg_config'程序,并在psycopg发行版的'setup.cfg'文件中设置该路径。然后运行'python setup.py install'并查看是否收到相同的错误消息。希望它只是开始“编译”;但如果没有,那么你就有理由执行上述更困难的程序。

答案 4 :(得分:2)

  1. 安装适用于Mac的PostgreSQL - http://www.postgresql.org/download/macosx

  2. 为psycopg2 install设置新PostgreSQL位置的路径:

  3. PATH=$PATH:/Library/PostgreSQL/9.0/bin/ sudo easy_install psycopg2