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

Вопрос:

Я использую 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 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.

Я остановился и начал работать с сервером без проблем, поэтому начал создавать свой фильтр в 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’})

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

from donations.filters import DonorFilter

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

Я попытался изменить импорт в моих фильтрах filter.py на фильтры, а не на django_filters, и ошибки не изменились. Я изменил все на django_filters (в файлах installed_apps и my 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, установленном в моем virtualenv

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

Я очень новичок в этом и ценю любую помощь!

Лучший ответ:

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

В виртуальной среде я установил pip, как описано в документах:
https://pip.pypa.io/en/stable/installing.html
python get-pip.py Это улучшило меня до пункта 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, но не на новую

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

Ответ №1

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

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

Версия Django, используемая мной, – 1,8, а версия python – 2.7.x

Решение заключается в установке djangorestframework-filters

pip install djangorestframework-filters

Имена очень сбивают с толку.

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

Ответ №2

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

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

Я, наконец, исправил его, понизив django-filter до 0,11.

Теперь стирание затвора выглядит так и работает:

Django==1.7 django-filter==0.11.0 djangorestframework==3.2.0 Ответ №3

Я сменил django_filter на django_filters в установленных приложениях, и все было в порядке.

Ответ №4

Я также столкнулся с этой проблемой при установке django-filter == 2.2.0

Это была моя версия Django:

Django [required: >=1.11, installed: 2.2]

settings.py:

INSTALLED_APPS = [ # … ‘django_filters’, ]

Я по ошибке установил:

pipenv install django_filters

Это правильная установка:

pipenv install django-filter

Надеюсь, это поможет.

Оцените статью
Добавить комментарий