在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 无济于事。
想知道是否有人有这样的问题而且运气不错。
答案 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"用于在本地计算机上安装所有依赖项。
希望这可以帮到你。