Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在gcloud上运行dev_appserver.py时出错;ImportError:没有名为MySQLdb的模块;?_Python_Google App Engine_Flask_Google Cloud Platform_Mysql Python - Fatal编程技术网

Python 在gcloud上运行dev_appserver.py时出错;ImportError:没有名为MySQLdb的模块;?

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

我正在尝试在Google App Engine上部署一个Python Flask应用程序。没有MySQL,应用程序运行良好。从flask导入
时,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
    文件中的
    libraries
    config),它在
    mysqldb
    案例中也可用于本地开发服务器

  • (通过
    requirements.txt
    文件)

回答中描述的操作删除了与应用程序捆绑的库的副本,这足以使GAE部署的应用程序正常工作。请注意,您没有提到:

  • requirements.txt
    文件中删除库,如果不这样做,意味着您在使用该文件进行
    lib
    安装时会再次遇到问题
  • 如果本地运行正常-即,如果在本地系统上实际完成了所需的mysqldb安装

您安装了什么版本的mysqlclient?安装版本1.4.1(删除1.4.2)您是对的。我重新安装了mysqlclient,指定为pip mysqlclient==1.4.1,至少它现在检测到了mysql模块。谢谢现在错误是:从MySQLdb导入*AttributeError:'module'对象没有属性'NULL'。我会调查这是否会导致本地devappserver无法运行;该方案是否仍应捆绑用于本地开发?我正在本地体验错误,但是如果我打包
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 -