未找到符号:带有Django项目的_PQbackendPID

时间:2012-06-16 18:26:07

标签: postgresql django-models pg

在MAC OS 10.6.8上运行 安装了postgresSQL,以及django - 使用python2.7 还在我的虚拟环境中使用pip安装了psycopg2和dj-database-url 并将这两行添加到我的setting.py:

import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}

根据Heroku的说明: https://devcenter.heroku.com/articles/django#database_settings 运行时:

python manage.py runserver

我收到此错误:

ImportError: dlopen(/Users.... venv/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _PQbackendPID
Referenced from: /Users.... venv/lib/python2.7/site-packages/psycopg2/_psycopg.so
Expected in: dynamic lookup

我一直在寻找几个小时,并尝试了各种各样的事情,包括建议: Mac OS X Lion Psycopg2: Symbol not found: _PQbackendPID 无济于事。

想知道是否有人有这样的问题而且运气不错。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。而不是像Heroku建议使用

那样安装依赖项
pip install Django psycopg2 dj-database-url

克隆你希望在venv中运行的任何repo,保留其原始settings.py。然后:

source venv/bin/activate

将新环境cd激活到新的仓库中,然后python manage.py runserver。应该设置。

或者,您可以重新制作PostGreSQL,然后再次运行,但这是一项更多的任务 - 但它适用于psycopg2。据我所知,问题来自使用64或i386构建时你应该使用32版本 - 但我不确定这一点,上面的解决方案很好地解决问题并使用venv为你做什么实际上,它很可能会使用它。

答案 1 :(得分:1)

我遇到了和你们一样的问题,而且我读了很多页面,但我找不到任何答案。许多解决方案是关于从源文件安装而不是与虚拟环境相关。 我已经找到并测试了以下解决方案,它解决了我的问题。

1-确保您的Postgres不高于9.4版本according to psycopg2。检查python版本。我使用Postgres 3.9.9。

2-问题出现在不同版本的Python(32/64位)背后。它应符合您的操作系统的64位位结构。从您的系统卸载所有版本的Python和pip。你可以找到here的指令,但不要删除Apple提供的系统Python的Python2.7。

3-安装" Mac OS X 64-bit/32-bit"来自python official website的安装程序并安装它。 之后安装pip。请注意,您应该使用命令" python3.5"使用Python 3.5版。您也可以从新的pip安装virtualenv。

4-毕竟你可以继续你的virtualenv并输入" pip3 install -r requirement.txt"用于在本地计算机上安装所有依赖项。

希望这可以帮到你。