You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署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
  • 要是你用了虚拟环境,先激活再装:
    source /home/cryptoassistant/tfg/venv/bin/activate
    pip install whitenoise
    
    同时记得在WSGI文件开头加上激活虚拟环境的代码:
    activate_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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:11:32