导入错误:找不到符号:_PQencryptPasswordConn 是什么意思,我该如何解决?

shr*_*yer 7 python postgresql psycopg2 flask-sqlalchemy

我正在尝试在 Flask_App 所在的下载目录中执行“flask run”。我的 Flask_App 是“applications.py”。当我在开发环境中执行“flask run”时,我得到了一个 URL。将 URL 粘贴到 Safari 后,出现此错误。


ImportError: dlopen(/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so, 2): Symbol not found: _PQencryptPasswordConn
  Referenced from: /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
  Expected in: /usr/lib/libpq.5.6.dylib
 in /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
Run Code Online (Sandbox Code Playgroud)

我正在使用 MacOSX High Sierra。我的 PostgreSQL 是 11 版。我的 python 更新到 3.7 版。pip 升级,psycopg 版本为 2.8.3。我尝试在各种目录上运行“flask run”,并尝试将“applications.py”移动到我当前所在的不同库和目录中。我曾尝试使用 sudo 但我意识到我不知道密码。过去,当我不小心删除了我的管理员帐户的管理员状态时,我强制创建了另一个管理员帐户……不知道这是否影响了 sudo,但它不接受我当前的管理员密码。我在安装 psycopg2 时也遇到了问题,但通过重新下载 PostgreSQL 11 解决了这个问题。我也使用 pip 成功安装了 SQLAlchemy 和 Flask-Session。

我尝试注释掉代码中的几行并将其缩小到 'create_engine' 函数,因为只有 'os.getenv("DATABASE_URL")' 按预期运行我的页面。

这是我的“applications.py”代码


ImportError: dlopen(/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so, 2): Symbol not found: _PQencryptPasswordConn
  Referenced from: /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
  Expected in: /usr/lib/libpq.5.6.dylib
 in /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
Run Code Online (Sandbox Code Playgroud)

粘贴 URL 后,我希望页面显示文本“项目 1:待办事项”,但我收到此错误消息:

flask.cli.NoAppException: While importing "applications", an ImportError was raised:

Traceback (most recent call last):
  File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 235, in locate_app
    __import__(module_name)
  File "/Users/dhruvaiyer/Downloads/applications.py", line 20, in <module>
    engine = create_engine(os.getenv("DATABASE_URL"))
  File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 425, in create_engine
    return strategy.create(*args, **kwargs)
  File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 81, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 584, in dbapi
    import psycopg2
  File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import (                     # noqa
ImportError: dlopen(/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so, 2): Symbol not found: _PQencryptPasswordConn
  Referenced from: /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
  Expected in: /usr/lib/libpq.5.6.dylib
 in /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
Run Code Online (Sandbox Code Playgroud)
File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 325, in __call__
self._flush_bg_loading_exception()
File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 313, in _flush_bg_loading_exception
reraise(*exc_info)
File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 302, in _load_app
self._load_unlocked()
File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 317, in _load_unlocked
self._app = rv = self.loader()
File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 372, in load_app
app = locate_app(self, import_name, name)
File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 242, in locate_app
'\n\n{tb}'.format(name=module_name, tb=traceback.format_exc())
flask.cli.NoAppException: While importing "applications", an ImportError was raised: Traceback (most recent call last): File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/flask/cli.py", line 235, in locate_app __import__(module_name) File "/Users/dhruvaiyer/Downloads/applications.py", line 20, in <module> engine = create_engine(os.getenv("DATABASE_URL")) File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 425, in create_engine return strategy.create(*args, **kwargs) File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 81, in create dbapi = dialect_cls.dbapi(**dbapi_args) File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 584, in dbapi import psycopg2 File "/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/__init__.py", line 50, in <module> from psycopg2._psycopg import ( # noqa ImportError: dlopen(/Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so, 2): Symbol not found: _PQencryptPasswordConn Referenced from: /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so Expected in: /usr/lib/libpq.5.6.dylib in /Users/dhruvaiyer/anaconda3/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
#The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.
Run Code Online (Sandbox Code Playgroud)

同样的代码也出现在我的终端窗口中。有关如何进行或如何解决此问题的任何建议?非常感谢您提前!

小智 10

克隆并安装了 Django 项目后,我遇到了同样的错误。我通过卸载psycopg2然后重新安装它来解决它,所有这些都在虚拟环境中:

pip uninstall psycopg2 进而 pip install psycopg2


小智 9

我遇到了同样的错误,我的解决方案是在虚拟环境中安装与基本 Python 站点包相同版本的 psycop2 和 psycopg2-binary

将版本设置为基本 python lib:在我的情况下是 2.7.7 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/psycopg2-2.7.7.dist-info

背景详细信息:Mac Os Catalina 10.15、Python3.6.8、pipenv postgres 10。Pycharm 2019.2.3 请求在虚拟环境上安装 psycopg2,尽管在基础 Python3.6.8 中有一个副本。

我安装了最新版本:psycopg2 2.8.3 并运行到该问题。我按照建议尝试了 psycopg2 2.6、2.6.1,但失败了。我尝试了其他一些解决方案但失败了。

我安装了与基本 Python 包相同版本的 psycopg2,问题解决了。就我而言,2.7.7

pipenv install psycpg2==2.7.7
pipenv install psycopg2-binary==2.7.7
Run Code Online (Sandbox Code Playgroud)

我不知道为什么要在虚拟环境中再次安装 psycopg2。

pipenv Pipfile 如下:

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
flask = "==1.0"
flask-sqlalchemy = "==2.3.2"
flask-wtf = "==0.14.2"
cymysql = "==0.9.1"
flask-cors = "==2.1.0"
flask-httpauth = "==2.7.0"
requests = "==2.18.4"
marshmallow = "*"
flask-marshmallow = "*"
marshmallow-sqlalchemy = "*"
connexion = {extras = ["swagger-ui"],version = "*"}
psycopg2 = "==2.7.7"
psycopg2-binary = "==2.7.7"

[dev-packages]

[requires]
python_version = "3.6"
Run Code Online (Sandbox Code Playgroud)