为什么我不能安装psycopg2?(Python 2.6.4,PostgreSQL 8.4,OS X 10.6.3)
原始信息(现在已经过时):
在我运行 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 个回答
如果你是从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命令。
(请查看下面的编辑以获取更新的问题)
你的电脑上没有“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
可执行文件。
请随时更新你的进展情况!
我觉得你把事情搞得太复杂了。与其直接运行setup.py,不如让MacPorts来帮你处理:
sudo port install py26-psycopg2