Python 在gcloud上运行dev_appserver.py时出错;ImportError:没有名为MySQLdb的模块;?
我正在尝试在Google App Engine上部署一个Python Flask应用程序。没有MySQL,应用程序运行良好。从flask导入Python 在gcloud上运行dev_appserver.py时出错;ImportError:没有名为MySQLdb的模块;?,python,google-app-engine,flask,google-cloud-platform,mysql-python,Python,Google App Engine,Flask,Google Cloud Platform,Mysql Python,我正在尝试在Google App Engine上部署一个Python Flask应用程序。没有MySQL,应用程序运行良好。从flask导入时,mysqldb导入MySQLdev\u appserver.py返回错误导入错误:没有名为mysqldb的模块。\u MySQL 我已经更新了app.yaml和requirements.txt(尝试了MySQL python和PyMySQL) main.py的前几行 from flask import Flask, render_template, fl
时,mysqldb导入MySQL
dev\u appserver.py返回错误导入错误:没有名为mysqldb的模块。\u MySQL
我已经更新了app.yaml和requirements.txt(尝试了MySQL python和PyMySQL)
main.py的前几行
from flask import Flask, render_template, flash, redirect, url_for, session, logging, request
from flask_mysqldb import MySQL
app = Flask(__name__)
# Config MySQL
app.config['MYSQL_HOST'] = '35.236.72.247'
app.config['MYSQL_USER'] = <removed>
app.config['MYSQL_PASSWORD'] = <removed>
app.config['MYSQL_DB'] = 'myFlaskApp'
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
# Initialize MySQL
mysql = MySQL(app)
我该如何解决这个问题?或者,在我的烧瓶应用程序中使用MySQL?该应用程序在我的系统上使用MySQL在本地运行良好。git rm-f/lib/MySQLdb
gcloud应用程序部署
删除了lib/MysqlDB,并将其再次推送到谷歌云,它成功了。显然,我的本地库与AppEngine的原生mysqldb存在冲突
现在我不再运行
dev_appserver.py app.yaml
这只是对您在回答中提到的冲突的解释
您在GAE应用程序中混合了使用第三方库的两个不同过程:
- (通过
文件中的app.yaml
config),它在libraries
案例中也可用于本地开发服务器mysqldb
- (通过
文件)requirements.txt
- 从
文件中删除库,如果不这样做,意味着您在使用该文件进行requirements.txt
安装时会再次遇到问题lib
- 如果本地运行正常-即,如果在本地系统上实际完成了所需的mysqldb安装
myslq-python
我会得到没有名为_-mysql
错误的模块;顺便说一下,我有一个通过brew进行的本地mysql安装。@BrunoRipa。使用GAE提供的安装时,需要本地安装来支持它,请参阅。但是您可能需要获得一个与GAE提供的版本兼容的特定版本。但我不确定——我不是mysql用户。
Flask-MySQLdb==0.2.0
mysqlclient==1.4.1
from flask import Flask, render_template, flash, redirect, url_for, session, logging, request
from flask_mysqldb import MySQL
app = Flask(__name__)
# Config MySQL
app.config['MYSQL_HOST'] = '35.236.72.247'
app.config['MYSQL_USER'] = <removed>
app.config['MYSQL_PASSWORD'] = <removed>
app.config['MYSQL_DB'] = 'myFlaskApp'
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
# Initialize MySQL
mysql = MySQL(app)
INFO 2019-02-09 01:13:00,098 devappserver2.py:278] Skipping SDK update check.
INFO 2019-02-09 01:13:00,172 api_server.py:275] Starting API server at: http://localhost:52922
INFO 2019-02-09 01:13:00,178 dispatcher.py:256] Starting module "default" running at: http://localhost:8080
INFO 2019-02-09 01:13:00,179 admin_server.py:150] Starting admin server at: http://localhost:8000
INFO 2019-02-09 01:13:02,374 instance.py:294] Instance PID: 28866
ERROR 2019-02-09 01:13:04,295 wsgi.py:263]
Traceback (most recent call last):
File "/Users/zq/Desktop/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Users/zq/Desktop/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/Users/zq/Desktop/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "/Users/zq/Desktop/Python-Flask/main.py", line 3, in <module>
from flask_mysqldb import MySQL
File "/Users/zq/Desktop/Python-Flask/lib/flask_mysqldb/__init__.py", line 1, in <module>
import MySQLdb
File "/Users/zq/Desktop/Python-Flask/lib/MySQLdb/__init__.py", line 18, in <module>
from . import _mysql
File "/Users/zq/Desktop/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py", line 1097, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named MySQLdb._mysql
INFO 2019-02-09 01:13:04,301 module.py:861] default: "GET / HTTP/1.1" 500 -