ImportError: нет модуля с именем Django filters

я использую Django 1.7.1, и я pip установил django-фильтры для моего виртуального env в /.virtualenvs/auction2/lib/python2.7/site-packages$

он сказал, что он был успешно установлен.

поэтому я разместил django-фильтры в установленных приложениях, таких как:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crispy_forms',
    'django_filters',
    'donations',
)

я побежал python manage.py runserver и получил эту ошибку:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/apps/config.py", line 87, in create
    module = import_module(entry)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named django_filters

он сказал, что он установлен, но почему он не может его импортировать? У меня есть еще один пакет, crispy-forms, установленный и работающий. Я просмотрел пакеты сайтов в виртуальной среде и я увидел:

crispy_forms
django
django_braces-1.4.0.dist-info
django_crispy_forms-1.4.0-py2.7.egg-info
django_filters-0.1.0-py2.7.egg-info
easy_install.py
easy_install.pyc
filters
pip

видя, что он входит как "фильтры" вместо того, что говорит документация, чтобы импортировать его как (django_filters), я подумал, что попробую изменить его на просто "фильтры" в installed_apps.

Я остановился и запустил runserver, без проблем, поэтому я начал создавать свой фильтр в filter.py:

import django_filters
from donations.models import Donor, Item, Issue

class DonorFilter(django_filters.FilterSet):
    class Meta:
        model = Donor
        fields = {'type':['exact'],'donor':['icontains'],}

        def __init__(self, *args, **kwargs):
            super(DonorFilter, self).__init__(*args, **kwargs)
            self.filters['type'].extra.update(
                {'empty_label': 'All Types'})

Я останавливаю и запускаю runserver, без проблем. Затем я начинаю добавлять и оператор импорта в views.py:

from donations.filters import DonorFilter

дает мне то же самое ImportError: No module named django_filters. ошибка.

Я попытался изменить импорт в моем filters.py фильтры, а не django_filters, и ошибки не изменились. Я изменил все обратно на django_filters (в installed_apps и мои filters.py) как говорится в документации, я получаю ошибку global name 'DonorFilter' is not defined когда я добавляю вид. Вот view.py:

def donor_list(request):
    f = DonorFilter(request.GET, queryset=Donor.objects.all())
    return render_to_response('donations/donor_list', {'filter': f})

это означает, что мне нужно импортировать функцию, которую я создал в filters.py? Так Что Я ... добавлять from donations.filters import DonorFilter в верхней части моей точки зрения. Тогда ошибка 'module' object has no attribute 'FilterSet'

Я вижу класс FilterSet в filters.py файл установлен в my virtualenv

я заметил, что есть больше развития на django-filter,https://github.com/alex/django-filter страница поднимается до v0.9.2, но pip устанавливает 0.1.0. Должен ли я устанавливать его другим способом (кроме pip)?

Я очень новичок в этом и благодарны любой помощи!

3 ответов


моя версия pip была старой, очень старой. 1.5.6 когда я установил свою виртуальную среду, она просто работала, поэтому я не задавал вопросов. Урок! Вот что я сделал на случай, если это поможет кому-то еще...

в виртуальной среде я установил pip, как описано в документах: https://pip.pypa.io/en/stable/installing.html python get-pip.py это обновило меня до pip 6.1.1

pip install django-filter
pip freeze > requirements.txt

требования к чтению.txt показал, что у меня

django-filter==0.9.2
django-filters==0.1.0

Так Что Я удалил старую версию с помощью pip uninstall django-filters

обратите внимание на s в старой версии, но не на новой

действительно основные вещи, но это действительно споткнулся. Спасибо всем, кто нашел время, чтобы разобраться в этом!


у меня также была та же проблема. Даже после установки django-filters Я не мог импортировать его

ImportError: нет модуля с именем django_filters

версия Django, которую я использую, - 1.8, а версия python-2.7.x

решение установить djangorestframework-filters

pip install djangorestframework-filters

имена очень запутанные.

django-rest-framework-filters является расширением для Django Rest framework и Django filter, что позволяет легко фильтр по отношениям while Django-filter является многоразовым приложением Django, позволяющим пользователям декларативно добавлять динамическую фильтрацию запросов из параметров URL.

у меня была аналогичная проблема с использованием django 1.7, djangorestframework==3.2.0 и последнего django-filter==0.13.0:

Using DjangoFilterBackend, but django-filter is not installed
cannot import name Expression

Я, наконец, исправил это, понизив django-filter до 0.11.

теперь pip freeze выглядит так и работает:

Django==1.7
django-filter==0.11.0
djangorestframework==3.2.0