google app engine sdk:配置不正确:加载mysqldb模块时出错:没有名为\u mysql的模块

a9wyjsp7  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(433)

我试图运行我的django应用程序在谷歌应用程序引擎sdk(本地)内 virtualenvMySQL 作为数据库。我的一切 requirements.txt 文件安装得很好。当我启动googleappenginesdk环境时,它抛出了一个看起来很常见的严重错误,但是stack overflow在googleappenginesdk中还没有任何解决这个问题的例子。
这是我的工作流程从我的项目根目录。。。 virtualenv venv && mkdir lib source venv/bin/activate pip install -r requirements.txt -t lib/ && pip install -r requirements.txt 当我运行以下命令来启动sdk时。。。。 dev_appserver.py app.yaml 我在回溯中发现以下错误。。。

File "/Users/username/Repositories/projectname/lib/django/db/utils.py", line 211, in __getitem__
backend = load_backend(db['ENGINE'])
File "/Users/username/Repositories/projectname/lib/django/db/utils.py", line 115, in load_backend
INFO     2018-06-26 20:09:30,812 module.py:846] default: "GET /_ah/start HTTP/1.1" 500 -
return import_module('%s.base' % backend_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/username/Repositories/projectname/lib/django/db/backends/mysql/base.py", line 30, in <module>
'Did you install mysqlclient or MySQL-python?' % e
ImproperlyConfigured: Error loading MySQLdb module: No module named _mysql.
Did you install mysqlclient or MySQL-python?

我的要求.txt

Django==1.11.8
djangorestframework==3.8.2
facebook-sdk
oauth2client==2.0.1
google-api-python-client==1.6.2
facebookads==2.11.1
httplib2==0.10.3
enum==0.4.6
requests-toolbelt==0.8.0
google-cloud-storage==1.6.0
google-resumable-media==0.3.1
google-auth
requests==2.18.0
lxml==3.8.0
pycrypto==2.6.1
MySQL-python==1.2.5

的内容 lib/
我正在我的app.yaml中调用mysqldb。。。

libraries:
- name: MySQLdb
  version: "latest"

appengine\u config.py的内容


# [START vendor]

from google.appengine.ext import vendor

vendor.add('lib')

# [END vendor]

我在调试时从列表中删除了一些东西。。。

  1. MySQL-python==1.2.5 当我执行 pip freeze 在我的虚拟环境中。
  2. MySQL 已安装并在本地计算机上运行良好。
    3) 到目前为止,我已经浏览了stack overflow的问题列表,但似乎没有一个有用。
a1o7rhls

a1o7rhls1#

安装是根据google的建议进行的,没有明显的错误。这个问题无法在外部环境中重现(类似的django设置工作得很好),所以我们来解决这个问题,请参见下面的(set) PYTHONPATH ).
gae请求将第三方库安装到 lib/ 目录,使之成为穷人的虚拟环境。那么 lib/ 正在通过调用添加到模块搜索路径 vendor.add('lib')appengine_config.py .
这在作者的设置中工作正常,因此gae成功地从中导入了django lib/django/ . 然后这个工作配置错误地导入mysqldb失败,mysqldb肯定安装到了同一个数据库中 lib/ .
在调查过程中,我们检查了 PYTHONPATH 环境变量可以影响任何东西。它没有,但设置它解决了这个问题:

export PYTHONPATH=/Users/username/Repositories/projectname/lib/

注意:避免在类似路径的环境变量中使用相对目录( ./lib 在erik的评论中),这会产生一个安全漏洞。

vnjpjtjt

vnjpjtjt2#

mysql python是一个c扩展,它可能会失败(没有名为\u mysql的模块)。你可以试试pymysql模块

相关问题