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