python 3.7.4:FLASK_SQLALCHEMY没有名为“ _sqlite3”的模块

时间:2019-08-13 16:23:01

标签: python sqlite flask-sqlalchemy

我正在使用Debian“ Linux mint 19.1”和python 3.7.4,并且系统已经有2.7和3.6版本,我创建了一个环境,但是当我开始使用db.create_all()创建数据库文件时,我有了“ ..

  

ModuleNotFoundError:没有名为“ _sqlite3”的模块“

我尝试通过安装此软件包[quick-sqlite,pysqlite3]

  
    
      

db.create_all()       追溯(最近一次通话):         dbapi中的文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py”,行338           从pysqlite2导入dbapi2作为sqlite       ModuleNotFoundError:没有名为“ pysqlite2”的模块

    
  

在处理上述异常期间,发生了另一个异常:

  

回溯(最近通话最近):     文件“”,第1行,位于     在create_all的第1033行,文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/flask_sqlalchemy/init.py”       self._execute_for_all_tables(app,bind,'create_all')     在_execute_for_all_tables中的第1025行中,文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/flask_sqlalchemy/init.py”       op(bind = self.get_engine(app,bind),** extra)     在get_engine的第956行中,文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/flask_sqlalchemy/init.py”       返回connector.get_engine()     在get_engine的第561行中,文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/flask_sqlalchemy/init.py”       self._engine = rv = self._sa.create_engine(sa_url,选项)     在create_engine的第966行中,文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/flask_sqlalchemy/init.py”       返回sqlalchemy.create_engine(sa_url,** engine_opts)     在create_engine中的第435行,文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/sqlalchemy/engine/init.py”       返回strategy.create(* args,** kwargs)     在创建的文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py”中,第87行       dbapi = dialect_cls.dbapi(** dbapi_args)     dbapi中的第343行的文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py”       提高e     dbapi中的第341行的文件“ /media/gabalawy/projetcs/training/Flask_Blog/env3.7/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py”       从sqlite3作为sqlite导入dbapi2#尝试使用2.5+ stdlib名称。     在第23行的文件“ /usr/local/lib/python3.7/sqlite3/init.py”中       从sqlite3.dbapi2导入*     文件“ /usr/local/lib/python3.7/sqlite3/dbapi2.py”,第27行,在       从_sqlite3导入*   ModuleNotFoundError:没有名为“ _sqlite3”的模块

2 个答案:

答案 0 :(得分:1)

我已经安装了“ pysqlite3”

  

pip安装pysqlite3

并修改

  

“ / site-packages / sqlalchemy / dialects / sqlite / pysqlite.py”,第341行

from sqlite3 import dbapi2 as sqlite  # try 2.5+ stdlib name.

from pysqlite3 import dbapi2 as sqlite  # try 2.5+ stdlib name.

答案 1 :(得分:0)

我相信_sqlite3导入是内部导入,应该可以从标准python安装中获得。缺少它的事实表明您的python构建存在问题(您是否自己编译过)。

我能够通过首先确保已安装ncurses然后安装来解决此问题:

zypper install python-curses

在ubunti上,我想这是等效的(尽管我不确定缺少它会导致相同的错误):

sudo apt-get install libncursesw5-dev

(我完整的构建先决条件是:

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev