部署Django网站至PythonAnywhere时遇whitenoise导入错误求助
解决PythonAnywhere部署Django时的whitenoise导入错误
嘿,我来帮你搞定这个问题!你遇到的ImportError: No module named 'whitenoise'其实是几个小问题叠加导致的,咱们一步步来修复:
1. 修正settings.py里的中间件路径错误
你看,你的MIDDLEWARE_CLASSES里写的是'django.middleware.WhiteNoiseMiddleware',但这个中间件是whitenoise包提供的,不是Django自带的!正确的写法应该是'whitenoise.middleware.WhiteNoiseMiddleware',而且按照官方推荐,最好把它放在SecurityMiddleware之后,调整后的配置如下:
MIDDLEWARE_CLASSES = ( 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', # 这里是修正后的正确路径 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', )
2. 调整WSGI文件的代码顺序
你的WSGI文件里把添加项目路径的代码放在了最后,这会导致导入Django和whitenoise的时候,系统找不到你的项目模块!得先把项目路径加入sys.path,再做其他操作,修正后的代码如下:
import os import sys # 先把项目根目录添加到系统路径里,这一步必须放在最前面 path = '/home/cryptoassistant/tfg/' if path not in sys.path: sys.path.append(path) # 设置Django的配置模块 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") # 导入WSGI应用和whitenoise from django.core.wsgi import get_wsgi_application from whitenoise.django import DjangoWhiteNoise # 用whitenoise包装WSGI应用 application = DjangoWhiteNoise(get_wsgi_application())
3. 确保在PythonAnywhere的正确环境中安装whitenoise
你说已经装了whitenoise,但大概率是装错了环境——比如你本地装了,或者PythonAnywhere里用了不同版本的Python(比如pip对应Python2,而你的WSGI用的是Python3)。
在PythonAnywhere的控制台里执行对应的安装命令:
- 如果用的是Python 2.7(Django1.8常用版本):
pip install whitenoise - 如果用的是Python3:
pip3 install whitenoise - 要是你用了虚拟环境,先激活再装:
同时记得在WSGI文件开头加上激活虚拟环境的代码:source /home/cryptoassistant/tfg/venv/bin/activate pip install whitenoiseactivate_this = '/home/cryptoassistant/tfg/venv/bin/activate_this.py' exec(open(activate_this).read(), {'__file__': activate_this})
4. 最后重启Web服务
做完上面的修改后,回到PythonAnywhere的Web管理页面,点击"Reload"按钮重启你的应用,让所有修改生效。
内容的提问来源于stack exchange,提问作者XBoss
相关产品推荐
相关产品推荐

