Reputation: 1692
I am using Django 1.7.1 and I pip installed django-filters to my virtual env at /.virtualenvs/auction2/lib/python2.7/site-packages$
It said it was installed successfully.
So I placed django-filters in installed apps like so:
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',
)
I ran python manage.py runserver
and got this error:
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
It said it installed, but why can't it import it? I have another package, crispy-forms, installed and working. I looked at my site packages on the virtual environment and I saw:
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
Seeing that it goes in as 'filters' instead of what the documentation says to import it as (django_filters), I thought I'd try changing it to just 'filters' in installed_apps.
I stoped and started the runserver, no problem, so I began building my filter in 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'})
I stop and start the runserver, no problem. Then I start adding a view and just the import statement at views.py:
from donations.filters import DonorFilter
gives me the same ImportError: No module named django_filters.
error.
I tried changing the import in my filters.py to filters rather than django_filters and the errors didn't change. I changed everything back to django_filters (in installed_apps and my filters.py) as the documentation says to do, I get the error global name 'DonorFilter' is not defined
when I add the view. Here is the view.py:
def donor_list(request):
f = DonorFilter(request.GET, queryset=Donor.objects.all())
return render_to_response('donations/donor_list', {'filter': f})
That means I need to import the function I created in filters.py? So I add
from donations.filters import DonorFilter
to the top of my view.
Then the error is 'module' object has no attribute 'FilterSet'
I can see the FilterSet class in the filters.py file installed in my virtualenv
I noticed there is more development on django-filter, the https://github.com/alex/django-filter page goes up to v0.9.2, but pip installs 0.1.0. Should I be installing it another way (other than pip)?
Upvotes: 52
Views: 114802
Reputation: 454
I also encountered this issue installing django-filter==2.2.0
This was my Django version:
Django [required: >=1.11, installed: 2.2]
settings.py:
INSTALLED_APPS = [
# ...
'django_filter',
]
This is the correct installation:
pipenv install django-filter
Upvotes: 12
Reputation: 37
Ensure its django_filters
and not django-filters
in settings.py. Also keep in find it's not django-filter
, it's django-filters
.
But to install it:
pip install django-filter
Upvotes: 0
Reputation: 21
I tried all of the above answers and none of them worked for me. I later learnt that the pip script is not installing modules for the interpreter that the python command is using.
SOLUTION:
python -m pip install django-filter
Upvotes: 2
Reputation: 13
I also experienced the same problem but i realized its because i had installed django-filter when am in the virtual environment. I tried installing django-filter at the same directory without activating the virtual environment and it worked
I used
pip install django-filter
Upvotes: 0
Reputation: 111
In my case, the issue was Interpreter, After wasting a day finally resolved the issue. Always check you are selecting the right Interpreter. I was getting this error before fixing the issue:
"django_filters" is not accessedPylance
Import "django_filters" could not be resolvedPylancereportMissingImports
Though I see requirment.txt showing django_filters 23.1
Upvotes: 0
Reputation: 171
We install it using: pip install django-filter
or in case you are using a virtual environment like pipenv, use pipenv install django-filter .
the above install, adds the latest version of django-filter. Add "==version" to specify the version ( say 0.11.0) you need
In the settings.py under app, ensure it's 'django_filters',
INSTALLED_APPS = [
# ...
'django_filters',
]
Upvotes: 1
Reputation: 9
I removed django_filters
in the settings INSTALLED_APPS
. this is worked for me
Upvotes: 0
Reputation: 55
I changed from django_filter
to django_filters
in installed apps and it was okay.
Upvotes: 4
Reputation: 2616
I also had the same issue. Even after installing django-filters
I couldn't import it
ImportError: No module named django_filters
The Django version I'm using is 1.8 and python version is 2.7.x
Solution is to install djangorestframework-filters
pip install djangorestframework-filters
The names are very confusing.
However django-rest-framework-filters
is an extension to Django REST framework and Django filter that makes it easy to filter across relationships while Django-filter
is a reusable Django application allowing users to declaratively add dynamic QuerySet filtering from URL parameters.
Upvotes: 13
Reputation: 735
I had a similar issue using django 1.7, djangorestframework==3.2.0 and latest django-filter==0.13.0:
Using DjangoFilterBackend, but django-filter is not installed
cannot import name Expression
I finally fixed it by downgrading django-filter to 0.11.
Now pip freeze looks like this and its working:
Django==1.7
django-filter==0.11.0
djangorestframework==3.2.0
Upvotes: 3
Reputation: 1692
My pip version was old, really old. 1.5.6 When I installed my virtual environment it just worked, so I didn't question. Lesson learned! Here is what I did in case it helps someone else...
In the virtual environment, I installed pip as described in the docs:
https://pip.pypa.io/en/stable/installing.html
python get-pip.py
This upgraded me to pip 6.1.1
pip install django-filter
pip freeze > requirements.txt
Reading requirements.txt showed I had
django-filter==0.9.2
django-filters==0.1.0
So I uninstalled the older version with pip uninstall django-filters
notice the s on the older version but not on the new one
Really basic stuff but it really tripped me up. Thanks to anyone who took time to look into this!
Upvotes: 77