本文介绍了导入错误:找不到符号是什么:_PQencryptPasswordConn是什么意思,我该如何解决?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在我的Flask_App所在的下载目录中执行"flask run".我的Flask_App是"applications.py".当我在开发环境中执行烧瓶运行"时,我得到了一个URL.将网址粘贴到Safari后,就会出现此错误.

I am trying to execute 'flask run' in the Downloads directory where my Flask_App resides. My Flask_App is 'applications.py'. When I execute 'flask run' in the development environment I am getting a URL. Once I paste the URL into Safari, I get this error.


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

我正在使用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.

I am using a MacOSX High Sierra. My PostgreSQL is version 11. My python is updated to version 3.7. And pip is upgraded and psycopg is on version 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. I have tried using sudo but I realise that I don't know the password. 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. 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.

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

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.

这是我的"applications.py"代码

This is my code for '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"

一旦我粘贴了URL,我希望页面显示文本"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:

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!

推荐答案

我遇到相同的错误,对我来说,解决方案是安装相同版本的psycop2&在虚拟环境中的psycopg2-binary,如基本的Python网站包中的

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 lib:在我的情况下为2.7.7/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/psycopg2-2.7.7.dist-info

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

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

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.

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

I install the latest version: psycopg2 2.8.3 and run to the problem. I tried psycopg2 2.6, 2.6.1 as suggested, failed. I tried a few other solutions and failed.

我安装了与基本Python软件包相同版本的psycopg2,问题已解决.就我而言,是2.7.7

I install psycopg2 the same version as in base Python package, problem solved. In my case, 2.7.7

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

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

I do not know why install psycopg2 again in virtual env.

pipenv Pipfile如下:

pipenv Pipfile as follwing:

[[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"

这篇关于导入错误:找不到符号是什么:_PQencryptPasswordConn是什么意思,我该如何解决?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 12:09
查看更多