【问题标题】:sqlite ImportError: No module named _sqlite3 Google App Enginesqlite ImportError:没有名为_sqlite3 Google App Engine的模块
【发布时间】:2019-10-11 15:57:45
【问题描述】:

我正在尝试通过 Google App Engine 部署 Python Flask、HTML、JavaScript 网络应用程序。

我正在为我的数据库使用 sqlite3

 >>> python
 >>> import sqlite3

这很好用。部署我的网络应用程序

$ gcloud app deploy

工作得很好。

但是当我访问该页面时,我会收到此消息

错误:服务器错误

服务器遇到错误,无法完成您的请求。 请在 30 秒后重试。

当我检查 https://console.cloud.google.com/home/dashboard 的错误报告时 我收到此错误

Traceback (most recent call last):
File "/base/alloc/tmpfs/dynamic_runtimes/python27g/941d77da994078b1/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/941d77da994078b1/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 311, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/941d77da994078b1/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/base/data/home/apps/p~live-business-solutions/20191010t190446.421644656225294026/webapp.py", line 9, in <module>
    from databasefunctions import *
  File "/base/data/home/apps/p~live-business-solutions/20191010t190446.421644656225294026/databasefunctions.py", line 5, in <module>
    import sqlite3
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/941d77da994078b1/python27/python27_dist/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/941d77da994078b1/python27/python27_dist/lib/python2.7/sqlite3/dbapi2.py", line 28, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3

这是从线

import sqlite3

我的 databasefunctions.py 文件。我不知道这是为什么,有人可以帮忙吗?

我想知道我是否应该在 requirements.txt 中包含 sqlite3?如果是这样,我会怎么做?

【问题讨论】:

    标签: python sqlite google-app-engine flask


    【解决方案1】:

    来自this answer

    sqlite3 是标准库的可选部分。

    所以它不是通过pip 安装的,而是使用requirements.txt 文件。但它需要一些包级别的依赖项libsqlite3-devsqlite-devel,这些依赖项不会出现在 Google App Engine Python3 运行时中。因此,在 Google App Engine Standard 上无法使用 sqlite3

    解决方案是使用Cloud Run,这将允许您在 Docker 容器中运行您的应用程序,并且您将能够自定义您的运行时。你可以从这个Quickstart guide 开始,或者检查this answer 我提供的关于其他库的相同问题。

    【讨论】:

    • 使用简单的 JSON 文件作为数据库会不会很糟糕?我不关心这个网络应用程序的安全性。但是我注意到每次更改都必须重写整个文件,这会很慢吗?上述 JSON 将只有 14 个元素,那么读取和重写 275 字节的文件会很重要吗?
    • 如果我确实使用 Cloud Run 并在 Docker 容器中运行,我的 Dockerfile 应该是什么样子?我注意到你在你提到的答案的 Dockerfile 中添加了#Install tesseract RUN apt-get update -qqy &amp;&amp; apt-get install -qqy \ tesseract-ocr \ libtesseract-dev,我会用某种安装 sqlite3 的方式来替换它?
    • RUN apt-get update -qqy &amp;&amp; apt-get install -qqy \ sqlite3 \ libsqlite3-dev 和好去吗?
    • 只需安装包libsqlite3-devsqlite-develRUN apt-get update -qqy &amp;&amp; apt-get install -qqy libsqlite3-dev \ sqlite-devel
    猜你喜欢
    • 2015-01-25
    • 2017-11-12
    • 1970-01-01
    • 2019-05-24
    • 2013-03-06
    • 2018-05-30
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多