简体   繁体   English

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

[英]What does Import Error: Symbol not found: _PQencryptPasswordConn mean and how do I fix it?

I am trying to execute 'flask run' in the Downloads directory where my Flask_App resides.我正在尝试在 Flask_App 所在的下载目录中执行“flask run”。 My Flask_App is 'applications.py'.我的 Flask_App 是“applications.py”。 When I execute 'flask run' in the development environment I am getting a URL.当我在开发环境中执行“flask run”时,我得到了一个 URL。 Once I paste the URL into Safari, I get this error.将 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

I am using a MacOSX High Sierra.我正在使用 MacOSX High Sierra。 My PostgreSQL is version 11. My python is updated to version 3.7.我的 PostgreSQL 是 11 版。我的 python 更新到 3.7 版。 And pip is upgraded and psycopg is on version 2.8.3. pip 升级,psycopg 版本为 2.8.3。 I have tried running 'flask run' on various directories and tried moving 'applications.py' into different libraries and directories that I am currently on.我尝试在各种目录上运行“flask run”,并尝试将“applications.py”移动到我当前所在的不同库和目录中。 I have tried using sudo but I realise that I don't know the password.我曾尝试使用 sudo 但我意识到我不知道密码。 In the past I force-created another admin account when I accidentally removed admin status on my admin account...don't know if this has affected sudo or not but its not accepting my current admin password.过去,当我不小心删除了我的管理员帐户的管理员状态时,我强制创建了另一个管理员帐户......不知道这是否影响了 sudo,但它不接受我当前的管理员密码。 I had an issue with installing psycopg2 as well but resolved that by re-downloading PostgreSQL 11. I have successfully installed SQLAlchemy and Flask-Session as well using pip.我在安装 psycopg2 时也遇到了问题,但通过重新下载 PostgreSQL 11 解决了这个问题。我也使用 pip 成功安装了 SQLAlchemy 和 Flask-Session。

I tried commenting out several lines within the code and have narrowed it down to the 'create_engine' function as just having 'os.getenv("DATABASE_URL")' runs my page as expected.我尝试注释掉代码中的几行并将其缩小到 'create_engine' 函数,因为只有 'os.getenv("DATABASE_URL")' 按预期运行我的页面。

This is my code for 'applications.py'这是我的“applications.py”代码

import os

from flask import Flask, session
from flask_session import Session
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

app = Flask(__name__)

# Check for environment variable
if not os.getenv("DATABASE_URL"):
    raise RuntimeError("DATABASE_URL is not set")

# Configure session to use filesystem
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)

# Set up database
engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))


@app.route("/")
def index():
    return "Project 1: TODO"

Once I pasted the URL, I expected the page to display the text "Project 1: TODO" However instead I get this Error message:粘贴 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
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.

This same code appears in my terminal window as well.同样的代码也出现在我的终端窗口中。 Any suggestions as to how to proceed or how to solve this issue?有关如何进行或如何解决此问题的任何建议? Thank you very much in advance!非常感谢您提前!

I ran into this same error after having cloned and installed a Django project.克隆并安装了 Django 项目后,我遇到了同样的错误。 I solved it by uninstalling psycopg2 and then re-installing it, all within the virtual env:我通过卸载psycopg2然后重新安装它来解决它,所有这些都在虚拟环境中:

pip uninstall psycopg2 and then pip install psycopg2 pip uninstall psycopg2然后pip install psycopg2

I run to the same error, solution to me is that installing the same version psycop2 & psycopg2-binary in virtual env as in base Python site-packages我遇到了同样的错误,我的解决方案是在虚拟环境中安装与基本 Python 站点包相同版本的 psycop2 和 psycopg2-binary

Set the version as in base python lib: in my case is 2.7.7 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/psycopg2-2.7.7.dist-info将版本设置为 base python lib:在我的情况下是 2.7.7 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/psycopg2-2.7.7.dist-info

Background Details: Mac Os Catalina 10.15, Python3.6.8, pipenv postgres 10. Pycharm 2019.2.3 request psycopg2 installation on virtual env, although there is a copy in base Python3.6.8.背景详细信息:Mac Os Catalina 10.15、Python3.6.8、pipenv postgres 10。Pycharm 2019.2.3 请求在虚拟环境上安装 psycopg2,尽管在基础 Python3.6.8 中有一个副本。

I install the latest version: psycopg2 2.8.3 and run to the problem.我安装了最新版本:psycopg2 2.8.3 并运行到该问题。 I tried psycopg2 2.6, 2.6.1 as suggested, failed.我按照建议尝试了 psycopg2 2.6、2.6.1,但失败了。 I tried a few other solutions and failed.我尝试了其他一些解决方案但失败了。

I install psycopg2 the same version as in base Python package, problem solved.我安装了与基本 Python 包相同版本的 psycopg2,问题解决了。 In my case, 2.7.7就我而言,2.7.7

pipenv install psycpg2==2.7.7
pipenv install psycopg2-binary==2.7.7

I do not know why install psycopg2 again in virtual env.我不知道为什么要在虚拟环境中再次安装 psycopg2。

pipenv Pipfile as follwing: 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"

I had the same error here:我在这里遇到了同样的错误:

ImportError : dlopen(/Users/johnndoe/dev/venv/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so, 2): Symbol not found: _PQencryptPasswordCon导入错误:dlopen(/Users/johnndoe/dev/venv/lib/python3.7/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so, 2):找不到符号:_PQencryptPasswordCon

and I confirm that after executing the following commands the issue was not there anymore :我确认在执行以下命令后问题不再存在:

pip uninstall psycopg2 
pip install psycopg2==2.7.7  
pip install psycopg2-binary==2.7.7

Thanks @Yubo谢谢@Yubo

In the virtual environment, I made these changes :在虚拟环境中,我进行了以下更改:

pip uninstall psycopg2 
pip install psycopg2
pip install psycopg2-binary

worked very well for me对我来说效果很好

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 此错误是什么意思,以及如何解决?CalledProcessError: - what does this error mean, and how do I fix it?CalledProcessError: “在分配之前引用了本地变量&#39;e&#39;”,此错误是什么意思? 如何解决此错误? - “local variable 'e' referenced before assignment” what does this error mean? How do I fix this error? 这个错误是什么意思,我可以修复它吗? - What does this error mean and can I fix it? 如何解决此错误,这意味着Category没有属性&#39;get_impath&#39;? - How do I fix this error, what does it mean Category has no attribute 'get_impath'? 这个错误是什么意思? 以及如何解决它 - what does this error mean? and how to fix it 此Gtk错误是什么意思,我该如何解决? - What does this Gtk error mean and how can I fix it? 此错误消息是什么意思以及如何修复它? - What does this error message mean and how to fix it? 当我尝试导入TextBlob时,出现“ ImportError:无法导入名称兼容性”。 这是什么意思? 我该如何解决? - When I try to import TextBlob I get “ImportError: cannot import name compat”. What does this mean? How can I fix it? 这是什么意思,我该如何解决? - What does this mean and how can I fix it? GAE错误204-这是什么意思我该如何避免? - GAE error 204 - what does it mean how do I avoid it?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM