PythonAnywhere部署Django项目时出现ImportError: No module named 'filebrowser'
解决Django 1.11 + django-filebrowser部署的两大问题
让我们一步步拆解你遇到的问题,先搞定最核心的ImportError: No module named 'filebrowser',再处理URL配置里的"site未定义"错误。
一、解决模块找不到的ImportError
这个错误说明你的Python环境里压根找不到filebrowser模块,大概率是版本不兼容或者安装路径不对:
- 安装适配Django 1.11的filebrowser版本
Django 1.11和Python3.5属于比较旧的技术栈,最新版的django-filebrowser已经不再支持它们了。你需要在PythonAnywhere的控制台里,先激活项目对应的虚拟环境(比如执行source ~/.virtualenvs/你的虚拟环境名/bin/activate),然后运行:
pip install django-filebrowser==3.11.2
这个版本是专门为Django1.11.x系列打造的,能完美兼容你的环境。
确认安装在正确的环境里
执行pip freeze | grep filebrowser,如果输出里没有django-filebrowser==3.11.2,说明你可能在全局Python环境装了,或者没激活虚拟环境。一定要确保安装在项目的虚拟环境中,否则Django加载不到这个模块。检查INSTALLED_APPS的配置
打开settings.py,确认INSTALLED_APPS里已经正确添加了'filebrowser',顺序不用太纠结(如果你没装grappelli的话,直接加在其他应用后面就行):
INSTALLED_APPS = [ # 你的其他应用,比如'django.contrib.admin'之类的 'filebrowser', # 剩下的应用 ]
二、解决"site未定义"的URL配置问题
在Django 1.11里配置filebrowser的URL,你得先导入它的site实例,再用Django1.11支持的url()方法来配置(别用Django2.0+的path())。修改项目根目录的urls.py:
# 首先导入filebrowser的site实例 from filebrowser.sites import site urlpatterns = [ # 你的其他URL配置,比如admin的路由 url(r'^admin/', admin.site.urls), # 添加filebrowser的路由,注意用正则表达式格式 url(r'^admin/filebrowser/', include(site.urls)), ]
之前的错误就是因为你没导入site就直接用了,现在加上导入语句就没问题了。
最后收尾步骤
- 重新收集静态文件(因为你用了WhiteNoise+CDN):
python manage.py collectstatic
- 去PythonAnywhere的Web标签页,点击"Reload"按钮重启你的Django应用,让所有配置生效。
如果还是有问题,记得去PythonAnywhere的错误日志里找更详细的报错信息——日志里的细节往往能帮你快速定位剩下的小问题。
内容的提问来源于stack exchange,提问作者Isocrates
相关产品推荐
相关产品推荐

