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

标签 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

对于任何了解后端 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 毕竟没有正确安装。所以我回到原点。

最佳答案

(请参阅下面针对您更新的问题所做的修改)

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

既然你谦虚地称自己为新手,这里有一点智慧......解决这个错误实际上与后端 Web 开发无关,因为它是你本地的开发环境(你的机器和所有配置和安装的软件)就是问题所在。像这样破译 gobbledegook 的最佳技巧是开始使用谷歌搜索您以前从未听说过的东西的关键字。如果我处在你的位置,这条错误消息会尖叫着让我“去找出 gcc4.0 到底是什么。然后,当我知道它是什么、它做了什么,以及为什么 python 需要它时,我就会弄清楚为什么python 在我的电脑上找不到它,然后我做了一些事情。”解决这些类型的问题并不是每个人都会感到满足,但这是肯定的。

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

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

关于python - 为什么我不能安装 psycopg2? (Python 2.6.4、PostgreSQL 8.4、OS X 10.6.3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029274/

相关文章:

python 扭曲 : separate protocol from processing

ios - Tabindex 属性未按预期工作 (ios/osx)

postgresql - 列出 PostgreSQL 中具有不同所有者的所有表的约束

postgresql - 删除索引锁

sql - 在 SQL 中如何仅返回匹配日期和月份的记录(忽略年份)

Python - 检查列表中的数字是否是数字的因子

python - 属性错误 : 'list' object has no attribute 'rfind' in using cx_freeze

python - 最新版本的 firefox 不适用于 selenium

macos - 设置 NSTableViewCell 编辑

java - OS X 上 Windows 环境下的测试程序