【问题标题】:Installing psycopg2 on Mountain Lion (brew + pip)在 Mountain Lion 上安装 psycopg2 (brew + pip)
【发布时间】:2012-08-07 00:17:59
【问题描述】:

我正在尝试让 psycopg2 在 ML 上工作,默认为 Python 2.7 (2.7.2)。我通过自制软件安装了 postgresql,并用 pip 安装了 psycopg2。 Postgres 顺利启动并运行,PGAdmin3 可以看到我创建的 db。

但是当我运行 python 并尝试时

import psycopg2

我明白了:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/psycopg2/__init__.py", line 67, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Library/Python/2.7/site-packages/psycopg2/_psycopg.so, 2): Symbol not     found: _PQbackendPID
  Referenced from: /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/psycopg2/_psycopg.so

现在sudo pip install psycopg2 的输出并不完全干净。 Clang 给出了一堆警告,但没有错误:

警告:编译期间未使用的参数:'-mno-fused-madd'
警告:未使用的函数“Dprintf” 警告:隐式转换丢失整数精度:“long”到“int” 警告:无符号表达式 ld:警告:忽略文件/usr/local/Cellar/postgresql/9.1.4/lib/libpq.dylib,文件是为不受支持的文件格式构建的(0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 )不是被链接的架构(i386):/usr/local/Cellar/postgresql/9.1.4/lib/libpq.dylib

最后一个链接器警告让我担心,我想知道它是否又是旧的 32-vs-64 位 Python 问题。我试过旧的:

defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

但没有骰子。

我接下来的想法是:强制 brew 将 postgresql 编译为 x86_64,或者从 brew 安装 python。我想要第一个选择,因为我还有一些其他软件(叹气),这取决于 Apple 的 Python 在 PATH 中的第一个位置。

任何想法如何使用 brew 将 postgresql 编译为 64 位?

【问题讨论】:

  • ld: warning 关于忽略libpq.dylibthe architecture being linkedi386,这意味着您的python 似乎已经是32 位但postgres 是64。不知道为什么它打印出一堆不过,十六进制而不是架构名称....您可以使用 file /usr/local/Cellar/postgresql/9.1.4/lib/libpq.dylib 检查 libpq 架构。
  • @Dougal 我收到了/usr/local/Cellar/postgresql/9.1.4/lib/libpq.5.4.dylib: Mach-O 64-bit dynamically linked shared library x86_64
  • @Dougal 啊!将defaults write 切换为no 解决了这个问题。谢谢!我都变了。

标签: python homebrew psycopg2 osx-mountain-lion


【解决方案1】:

正如@Doughal 指出的那样,我已经在运行 32 位 Python,而库需要 64 位。所以,用一个简单的方法修复

defaults write com.apple.versioner.python Prefer-32-Bit -bool no

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 2012-10-11
    • 1970-01-01
    • 2012-08-22
    • 2013-11-05
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多