簡體   English   中英

sqlite ImportError: No module named _sqlite3 Google App Engine

[英]sqlite ImportError: No module named _sqlite3 Google App Engine

I am attempting to deploy a Python Flask, HTML, JavaScript web application through Google App Engine.

我正在為我的數據庫使用 sqlite3

 >>> python
 >>> import sqlite3

這工作得很好。 部署我的 web 應用程序

$ 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? 如果是這樣,我會怎么做?

這個答案

sqlite3是標准庫的可選部分。

所以它不是通過pip安裝的,因此使用requirements.txt文件。 但它需要一些 package 級別的依賴libsqlite3-devsqlite-devel ,這些依賴項不在 Google App Engine Python3 運行時中。 所以不能在 Google App Engine Standard 上使用sqlite3

解決方案是使用Cloud Run ,它允許您在 Docker 容器中運行您的應用程序,並且您將能夠自定義您的運行時。 您可以從本快速入門指南開始,或查看我提供的關於其他庫相同問題的答案

在 centos 中嘗試以下命令,以在 docker 命令執行期間解決 GCP slite3 導入錯誤:

yum install -y gcc make sqlite-devel zlib-devel libffi-devel openssl-devel

需要重新配置 python 3+版本

cd python3.9.6./configure make clean make && make altinstall sudo ln -s /usr/local/bin/python3 /usr/bin/python3

在檢查 /bin/python3 時,它必須返回 3.9.6,如果您要使用 3.6,則必須重新配置它並且必須創建符號鏈接。

sudo ln -sf /usr/bin/python2.7 /usr/bin/python (必須運行,否則 YUM 命令不運行)

/bin/python3 --版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM