2011-08-09 33 views
0

我最近升级到Mac OS X Lion,并试图让psycopg2再次与python 2.6一起工作。以前的网站上强制Python运行在32位以上的指示(看到像这里的地方:http://favosdream.blogspot.com/2009/09/make-psycopg2-and-readline-work-in-snow.html)没有给任何运气。甚至试图强行使用Python拱-i386蟒蛇32位仍然给我的错误:Mac OS X Lion Psycopg2:未找到符号:_PQbackendPID

symbol not found: _PQbackendPID 
    Referenced from: /Library/Python/2.6/site-packages/psycopg2/_psycopg.so 
    Expected in: flat namespace 
+0

狮子更是64位所以为什么不是那 – Mark

回答

1

你尝试arch -i386 python2.6如果您在使用/usr/bin/python2.6苹果提供的Python的2.6?但是,如果您仍在运行psycopg2的32位版本和PostgreSQL客户端库,则可能是安装更新的64位或64位/ 32位通用版本的好时机。 MacPorts可以提供帮助。

+0

所以这里有一个更新:做拱-i386 python的作品,我能够导入psycopg2罚款。但是,当试图通过输入'arch -i386 python manage.py runserver'来运行我的django服务器时,它在导入时失败。似乎它没有采取拱形参数当试图启动django – mikec

+0

它可能是另一个Python子进程正在启动,默认为64位。如果您使用Apple提供的Python 2.6,如果您使用/ usr/bin/python,则可以通过设置特殊Apple环境变量'export VERSIONER_PYTHON_VERSION = 2.6'和'export VERSIONER_PYTHON_PREFER_32_BIT = yes'来解决此问题'。请参阅Apple手册页中的python('man python')。但是通过升级你可能会更好。 –

+0

哦,伙计!如果在另一个问题中确实遵循了另一个人的建议,并通过用符号链接覆盖'/ usr/bin/python',则上面的'export'建议可能不起作用。我相信魔法是由苹果特殊的'/ usr/bin/python'程序处理的。 –

2

我在Snow Leopard/10.6.8上也遇到了这个问题,在一份非常激烈的合同中刚刚失去了半天。不好玩。我最终通过a)完全删除所有postgres版本并重新启动,b)完全删除所有psycopg2安装(使用locate和be rlessless),c)将我的系统python升级到2.7,d)重新安装virtualenv和pip,在下面这个页面上的说明,从DMG安装程序安装的Postgres 9.1开始正确的Python版本,然后E):

http://hardlifeofapo.com/psycopg2-and-postgresql-9-1-on-snow-leopard/

最终却是这样简单:

virtualenv your_virtual_env_name 
. your_virtual_env_name/bin/activate 
export ARCHFLAGS="-arch i386 -arch x86_64" 
export PATH=$PATH:/Library/PostgreSQL/9.1/bin 
pip install psycopg2 

好运气!