AttributeError: '模块'对象没有'wraps'属性

0 投票
2 回答
5807 浏览
提问于 2025-04-17 01:00

我正在尝试在一个共享主机上运行Django,这个主机我可以通过ssh访问,但一直遇到问题。最开始我运行django-admin.py的时候,出现了一个错误,说找不到'functools'这个模块。我让主机公司安装了functools这个包,但现在当我再试着运行django-admin.py时,又出现了新的错误信息。

Traceback (most recent call last):
  File "manage.py", line 2, in <module>
    from django.core.management import execute_manager
  File "/usr/local/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/core/management/__init__.py", line 3, in <module>
    from optparse import OptionParser, NO_DEFAULT
  File "/usr/local/lib/python2.6/optparse.py", line 90, in <module>
    from gettext import gettext
  File "/usr/local/lib/python2.6/gettext.py", line 49, in <module>
    import locale, copy, os, re, struct, sys
  File "/usr/local/lib/python2.6/locale.py", line 98, in <module>
    @functools.wraps(_localeconv)
AttributeError: 'module' object has no attribute 'wraps'

我提交了一个支持请求,主机公司告诉我他们重新安装了Python 2.6,但这并没有解决问题。我还尝试过使用2.4版本,这个版本在机器上也有,但结果又出现了之前的错误:ImportError: No module named functools

有没有人有什么建议吗?

2 个回答

0

这个解决方案对我有效。

mv /usr/lib/python2.7/site-packages/pip* ./
yum reinstall python-pip
sudo pip install django 

或者试试另一种解决方案。

这个方法有点风险,可能不是最安全的解决方案,但对我来说效果不错。

  1. 先卸载 pip。

    pip uninstall pip
    

    如果你是通过 get-pip.py 安装的。

     python -m pip uninstall pip setuptools
    
  2. 找到安装路径。

      /usr/lib/python2.7/site-packages/
    

    然后找到两个 pip 目录,分别是 pippip-6.0.8.dist-info

  3. 删除这两个目录 pippip-6.0.8.dist-info

  4. 然后再试一次。

     yum install python-pip
    

    或者

    python get-pip.py
    
3

一个可能的原因是有东西遮住了标准库中的 functools 模块。你在主脚本(manage.py)旁边有没有一个叫 functools.py 的文件?可以在 manage.py 里运行 import functools; print functools.__file__ 这行代码,看看它打印出来的是什么(要在其他导入之前运行)。如果它没有打印出 /usr/local/lib/python2.6/functools.py,那可能是有一个文件遮住了标准库的模块。如果它确实打印出了这个路径,那就说明那个文件有问题,重新安装也没用。

撰写回答