错误:在django 1.3.1 + python 2.6中没有找到staticfiles模块?问题出在哪里?

1 投票
2 回答
1840 浏览
提问于 2025-04-17 09:08

我有几天没碰这个django项目了,现在回来了却没法继续工作。当我在Eclipse Aptana里调试或运行时,出现了“错误:没有名为staticfiles的模块”的提示。

  • 我甚至把Aptana更新到了今天的版本,但还是没用。
  • 我卸载了django,删除了所有相关文件,然后重新安装。
  • 如果我在命令行(Windows上)用python导入django,它的位置是我预期的那样。

但是如果我在settings.py里把“'django.contrib.staticfiles'”这一行删掉,其他的就都能正常工作了,不过我就无法访问静态文件,这也是预料之中的。

这几天我安装了Google App Engine和Python 2.5;这会是问题所在吗?我该怎么解决?

非常感谢*

2 个回答

0

在新的Django版本中,加载静态文件的写法发生了变化。你应该使用 {% load static %},而不是 {% load staticfiles %}

3

以下是我查找问题的步骤:

  • 首先,确认在命令行(Windows的cmd.exe)中能正常工作,这样可以排除与Aptana相关的问题。你需要执行类似这样的命令:C:\Path\to\Python2.6\python.exe manage.py runserver(注意:选择任何可以检查你settings.py的管理命令)。如果这里也出现同样的错误,那说明你的Python2.6中没有安装Django 1.3.1(你可以安装它,或者设置一个新的虚拟环境,下面会提到)。
  • 一旦在命令行中能正常工作,你只需要确保Aptana使用的是正确的解释器路径。你需要检查在全局设置(工作区设置)中是否正确定义了pydev的Python解释器,然后在具体项目中使用它(检查项目设置,确保它使用的是你刚定义的Python解释器)。
  • 注意:Django 1.3.1可以使用Python2.5,但下一个版本的Django不支持。

以下是我将来避免这个问题的方法:

  • 使用virtualenv来避免依赖于你安装历史的随意性(只要你在任何版本的Python中安装了virtualenv,就可以在设置虚拟环境时指定使用哪个Python:virtualenv -p C:\Path\to\Python2.6\python.exe)。
  • 使用virtualenv --no-site-packages来确保你本地没有依赖。
  • 使用pip来安装所有的Python包(对于包含二进制内容的包可能会出现问题,使用easy_install来处理这些包)。
  • 使用pip freeze > requirements.txt来记录你的依赖(并将这个文件添加到你的源代码管理中)。

[1] http://pypi.python.org/pypi/virtualenv

[2] http://pypi.python.org/pypi/pip

注意:pip和easy_install会自动安装到你的新虚拟环境中。

撰写回答