[英]“ModuleNotFoundError(”No module named 'MySQLdb'“,)” when deploying a OpenLiteSpeed django solution on GCP
我正在测试谷歌云平台,我在谷歌计算引擎上部署了一个带有 Ubuntu VM 的 OpenLiteSpeed Django 解决方案。 部署后,一切都像一个魅力,我能够到达“你好,世界”起始页面。
当我尝试通过将/usr/local/lsws/Example/html/demo/app
中的views.py
文件更改为:
import MySQLdb
from django.shortcuts import render
from django.http import HttpResponse
def getFromDB():
data = []
db = MySQLdb.connect(host="ip",
user="user",
passwd="pw",
db="db")
cur = db.cursor()
cur.execute("SELECT * FROM table")
for student in students:
data.append(student)
return data
def index(request):
return HttpResponse(getFromDB)
并再次访问 IP 我遇到了以下回溯和错误:
Environment:
Request Method: GET
Request URL: http://ip/
Django Version: 3.0.3
Python Version: 3.6.9
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "/usr/local/lsws/Example/html/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/usr/local/lsws/Example/html/lib/python3.6/site-packages/django/core/handlers/base.py", line 100, in _get_response
resolver_match = resolver.resolve(request.path_info)
File "/usr/local/lsws/Example/html/lib/python3.6/site-packages/django/urls/resolvers.py", line 544, in resolve
for pattern in self.url_patterns:
File "/usr/local/lsws/Example/html/lib/python3.6/site-packages/django/utils/functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/usr/local/lsws/Example/html/lib/python3.6/site-packages/django/urls/resolvers.py", line 588, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/local/lsws/Example/html/lib/python3.6/site-packages/django/utils/functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/usr/local/lsws/Example/html/lib/python3.6/site-packages/django/urls/resolvers.py", line 581, in urlconf_module
return import_module(self.urlconf_name)
File "/usr/local/lsws/Example/html/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
<source code not available>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
<source code not available>
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
<source code not available>
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
<source code not available>
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
<source code not available>
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
<source code not available>
File "/usr/local/lsws/Example/html/demo/demo/urls.py", line 18, in <module>
from app import views
File "/usr/local/lsws/Example/html/demo/app/views.py", line 1, in <module>
import MySQLdb
Exception Type: ModuleNotFoundError at /
Exception Value: No module named 'MySQLdb'
我尝试在/usr/bin
目录中运行./pip3 install mysqlclient
以及sudo apt install python3-dev
和sudo apt install libmysqlclient-dev
,但没有成功。 有人能帮忙吗? 我是使用应用程序的新手。
更新:所以,通过尝试一堆不同的东西,我终于通过 cd'ing 进入/usr/bin
并执行sudo -H./pip3 install mysqlclient
来解决问题。 我不完全确定为什么在执行./pip3 install mysqlclient
时它没有给我任何权限错误 - 但是现在问题已解决。
是否安装了 MySQLdb? 进入 pip3 list 看到了吗?
我在文档中看到建议是像这样导入 MySQLdb。
from MySQLdb import _mysql
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.