web-dev-qa-db-ja.com

ImportError:Django_filtersというモジュールはありません

Django 1.7.1を使用しており、/.virtualenvs/auction2/lib/python2.7/site-packages$の仮想環境にDjangoフィルターをインストールしました。

正常にインストールされたという。

だから私はインストールされたアプリに次のように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で単に「フィルター」に変更してみようと思いました。

ランサーバーを停止して起動しましたが、問題ありませんでしたので、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でビューとimportステートメントの追加を開始します。

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'です

Virtualenvにインストールされているfilters.pyファイルでFilterSetクラスを確認できます。

Django-filterの開発が進んでいることに気付きました。 https://github.com/alex/Django-filter ページはv0.9.2になりますが、pipは0.1.0をインストールします。別の方法でインストールする必要がありますか(pip以外)?

私はこれに非常に新しいので、助けてくれてありがとう!

23
ksi_help

私のpipバージョンは古く、本当に古いものでした。 1.5.6私が仮想環境をインストールしたとき、それはちょうど動いたので、私は質問しませんでした。学んだ教訓!これが他の人を助けるために私がしたことです...

仮想環境で、ドキュメントの説明に従ってpipをインストールしました。 https://pip.pypa.io/en/stable/installing.htmlpython get-pip.pyこれにより、pip 6.1にアップグレードされました。 1

pip install Django-filter
pip freeze > requirements.txt

Requirements.txtを読むと、私が持っていたことが示されました

Django-filter==0.9.2
Django-filters==0.1.0

そこで、pip uninstall Django-filtersで古いバージョンをアンインストールしました

古いバージョンのsに注意してくださいが、新しいバージョンにはありません

本当に基本的なものですが、本当につまずきました。これを調べるのに時間をかけた人に感謝します!

41
ksi_help

私も同じ問題を抱えていました。 Django-filtersをインストールした後でもインポートできませんでした

ImportError:Django_filtersというモジュールはありません

Django使用しているバージョンは1.8で、pythonバージョンは2.7.xです

溶液 djangorestframework-filtersをインストールすることです

pip install djangorestframework-filters

名前は非常に紛らわしいです。

ただし、Django-rest-framework-filtersは、DjangoRESTフレームワークおよびDjango Django-filterは再利用可能なDjango=アプリケーションであり、ユーザーはURLパラメータから動的なクエリセットフィルタリングを宣言的に追加できます。

10
Ayush Vatsyayan

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
3
Walter B

インストール済みアプリでDjango_filterからDjango_filtersに変更しましたが、問題ありませんでした。

1
Wanjiku Kariuki

また、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

それが役に立てば幸い。

0
andreielizaga