2015-09-24 11 views
31

runserverまたはshellのいずれかをmanage.pyを使用して実行しようとすると、ImportErrorの例外が発生します。私はDjango 1.9を使用しています。Django 1.9 ImportError for import_module

ImportError: No module named 'django.utils.importlib' 
+5

Django 1.9はアルファステータスに達したばかりであり、プロダクションでは使用できません。非常に良い理由がない限り、1.8を使用してください。 –

+2

ダニエルありがとうございます。私は現時点では地元の開発でしか実行していませんが、Djangoチームが安定したリリースを取り戻す問題を追跡するのに役立ちます。 – Matt

+1

Django 1.9がリリースされました。 – tutuca

答えて

54

django.utils.importlibは、Python 2.6はまだサポートされていたときのための互換性ライブラリです。これはDjango 1.7以降では廃止されました。これはPython 2.6のサポートを中止し、廃止予定サイクルあたり1.9で削除されています。

使用Pythonの代わりにimport_module機能:どのような方法でmodule_loadingは、実際の関数を定義しますので、あなたがdjango.utils.module_loadingからそれをインポートすることができ

from importlib import import_module 

理由はimportlib.import_moduleは、そのモジュールにインポートされていることで、それはないです。

django.utils.module_loading.import_moduleはパブリックAPIの一部ではないため、マイナーバージョンのアップグレードであっても使用されなくなった場合はいつでも削除できます。

+0

ありがとう、私は 'importlib'が組み込みモジュールであることは決して実現しませんでした!私は次の時間を深く掘り下げるべき良いレッスンです。 – Matt

19

私は次のようでこれを解決:

try: 
    # Django versions >= 1.9 
    from django.utils.module_loading import import_module 
except ImportError: 
    # Django versions < 1.9 
    from django.utils.importlib import import_module 
+3

どのファイルにこのコードを書くことができますか? – Richardd

+1

どのファイルにこのコードを書くことができますか?私はdjangoを1.7から1.9にアップデートしました。そして仕事を止めた。 – Richardd

+0

はendless_paginationなどのバグのようです。 – tutuca

関連する問題