2015-04-28 11 views
14

Ich verwende Django 1.7.1 und ich pip installiert django-Filter in meiner virtuellen env bei /.virtualenvs/auction2/lib/python2.7/site-packages$Import: Keine Modul namens django_filters

Er sagte, es erfolgreich installiert wurde. So

Ich legte django-Filter in installierten Anwendungen wie 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', 
) 

Ich lief python manage.py runserver und habe diesen Fehler:

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 

Er sagte, es installiert, aber warum kann es nicht importieren es? Ich habe ein anderes Paket, knusprige Formulare, installiert und funktioniert. Ich schaute auf meine Website-Pakete auf der virtuellen Umgebung und ich sah:

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 

Sehen, dass es in als ‚Filter‘ geht statt dessen, was die Dokumentation sagt, es als (django_filters) zu importieren, ich dachte, ich würde versuchen, es in 'installed_apps' zu 'filters' ändern.

I stoped und begann die runserver, kein Problem, und so begann ich meine Filter in filter.py Gebäude:

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'}) 

ich die runserver stoppen und starten, kein Problem. Dann beginnen Hinzufügen ich einen Blick und nur die Import-Anweisung bei views.py:

from donations.filters import DonorFilter 

gibt mir die gleiche ImportError: No module named django_filters. Fehler.

Ich habe versucht, den Import in meinem filters.py zu Filtern anstelle von django_filters zu ändern, und die Fehler haben sich nicht geändert. Ich habe alles zurück in django_filters (in installed_apps und meine filters.py) geändert, wie die Dokumentation sagt, ich bekomme den Fehler global name 'DonorFilter' is not defined, wenn ich die Ansicht hinzufügen. Hier ist der view.py:

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

Das bedeutet, ich muss die Funktion importieren, die ich in filters.py erstellt habe? Also füge ich from donations.filters import DonorFilter an die Spitze meiner Ansicht hinzu. Dann ist der Fehler 'module' object has no attribute 'FilterSet'

ich die FILTERSET Klasse in der filters.py Datei in meinem virtualenv installiert sehen

ich bemerkte, dass es mehr Entwicklung auf django-Filter ist, die https://github.com/alex/django-filter Seite geht bis zu v0.9.2 , aber pip installiert 0.1.0. Sollte ich es anders installieren (außer Pip)?

Ich bin sehr neu und schätze jede Hilfe!

+0

Ok, ein Schritt nach dem anderen. Es gibt so viele Fehler, dass es schwierig ist, nur Eins zu beantworten. Wenn du deine settings.py in 'INSTALLED_APPS' steckst, filtert die App und in deiner .py importierst du' filters' anstelle von django_filter, was passiert dann? – RafaelC

+0

Danke, ich weiß, ich habe eine große Sauerei! Wenn ich "filters" in "INSTALLED_APPS" in settings.py und "filters.py" in meine filters.py einfüge, sind die Fehler verschwunden. Ich kann auf meine App zugreifen, aber auf der Seite ist kein Filter vorhanden. Der Submit-Button für den Filter ist da, aber sonst nichts. –

+0

Für alle anderen, die daran festhalten: stellen Sie sicher, dass Sie nicht versuchen, den 'Django-Filter' zu importieren (beachten Sie den Bindestrich und nicht den Unterstrich). –

Antwort

25

Meine Pip-Version war alt, wirklich alt. 1.5.6 Als ich meine virtuelle Umgebung installiert habe, hat es einfach funktioniert, also habe ich nicht gefragt. Lektion gelernt! Hier ist, was ich für den Fall, tat es hilft jemand anderes ...

In der virtuellen Umgebung, ich installierte pip wie in der Dokumentation beschrieben: https://pip.pypa.io/en/stable/installing.html python get-pip.py Das ist mir ein Upgrade auf pip 6.1.1

pip install django-filter 
pip freeze > requirements.txt 

Leseanforderungen.txt zeigte ich

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

So hatte ich die ältere Version mit pip uninstall django-filters

Mitteilung des s auf der älteren Version deinstalliert, aber nicht auf die neuen

wirklich grundlegenden Dingen, aber es ausgelöst mich wirklich oben. Danke an alle, die sich die Zeit genommen haben, sich das anzusehen!

+0

Wow, je mehr Sie wissen. 'pip freeze' wird in Zukunft eine Menge Zeit für mich einsparen, bis ich zu Docker gehe. – BastiBen

+1

> beachten Sie die s auf der älteren Version aber nicht auf dem neuen Danke dafür !!! – Timur

2

hatte ich ein ähnliches Problem mit django 1,7, djangorestframework == 3.2.0 und aktuelle django-Filter == 0.13.0:

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

ich es endlich fixiert django-Filter auf 0,11 Herabstufung.

Jetzt pip freeze sieht wie folgt aus und seine Arbeits:

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

Ich hatte auch das gleiche Problem. Auch nach django-filters Installation konnte ich es nicht importieren

ImportError: No module named django_filters

Die Django-Version ich benutze ist 1.8 und Python-Version ist 2.7.x

Lösung installieren djangorestframework-filters

pip install djangorestframework-filters 

Die Namen sind sehr verwirrend.

Jedoch ist django-rest-framework-filters eine Erweiterung zu Django REST-Framework und Django-Filter, die das Filtern von Beziehungen erleichtert, während Django-filter eine wiederverwendbare Django-Anwendung ist, mit der Benutzer dynamisch dynamische QuerySet-Filterung aus URL-Parametern hinzufügen können.