【问题标题】:psycopg2 can't find symbol _PQbackendPIDpsycopg2 找不到符号 _PQbackendPID
【发布时间】:2015-10-26 14:43:44
【问题描述】:

尝试开始使用 django,但由于某种原因 psycopg2 没有找到我的 postgres 实例。这是错误消息:

(env)Ryans-MacBook-Pro:crib_db nonzero$ python3 manage.py runserver
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x36f1584>
Traceback (most recent call last):
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 20, in <module>
import psycopg2 as Database  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/psycopg2/__init__.py", line 50, in <module>
  from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _PQbackendPID
  Referenced from: /Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/psycopg2/_psycopg.so
  Expected in: dynamic lookup


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/utils/autoreload.py", line 229, in wrapper
fn(*args, **kwargs)
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/core/management/commands/runserver.py", line 107, in inner_run
autoreload.raise_last_exception()
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/utils/autoreload.py", line 252, in raise_last_exception
six.reraise(*_exception)
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/utils/six.py", line 658, in reraise
raise value.with_traceback(tb)
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/utils/autoreload.py", line 229, in wrapper
fn(*args, **kwargs)
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/site-packages/django/apps/config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
  File "/Users/nonzero/Programming/Data_Wizard/env/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
...
...
...

我确保我可以在命令行上使用 psql 访问我的数据库,并使用 ps -e | grep postgres 我得到:

1647 ??         0:00.31 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
1649 ??         0:00.01 postgres: checkpointer process       
1650 ??         0:00.30 postgres: writer process       
1651 ??         0:00.26 postgres: wal writer process       
1652 ??         0:00.24 postgres: autovacuum launcher process       
1653 ??         0:00.72 postgres: stats collector process 
75317 ttys001    0:00.00 grep postgres

我也怀疑这可能是一些版本问题,但我使用的是 psycopg2(2.6.1) 和 postgres(9.4.5) 的当前版本。

我在尝试使用 sqlalchemy 在一些代码中编写简单查询时也遇到了错误,所以我认为它不是 django 特有的。

【问题讨论】:

  • 您是使用brew 还是postgresql 安装程序来安装postgresql 客户端库?

标签: python macos postgresql psycopg2


【解决方案1】:

对于其他有类似问题的人,我通过使用brew rmtree 删除所有版本的 python 和 postgres 解决了这个问题。我还必须删除早期安装在 /Library/Frameworks 目录中的 python,清除 .bash-profile 中我的 PATH 中的冗余,并在之后的所有内容上更新 brew install。此外,brew doctor 可以解决任何符号链接问题。然而,并不是 100% 完全解决了它。

【讨论】:

    猜你喜欢
    • 2019-03-17
    • 2011-10-23
    • 2012-12-09
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多