2015-09-24 13 views
31

Khi cố gắng chạy runserver hoặc shell sử dụng manage.py Tôi nhận được ngoại lệ ImportError. Tôi đang sử dụng Django 1.9.Django 1.9 ImportError cho import_module

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

Lưu ý rằng Django 1.9 chỉ mới đạt trạng thái alpha và không phù hợp để sử dụng sản xuất. Sử dụng 1,8 trừ khi bạn có một lý do rất tốt. –

+2

Cảm ơn Daniel. Tôi chỉ chạy nó trong phát triển địa phương tại thời điểm này, nó là nhiều hơn một phương tiện để giúp đội Django theo dõi các vấn đề mà sẽ giữ lại một bản phát hành ổn định. – Matt

+1

Django 1.9 hiện đã hết. – tutuca

Trả lời

54

django.utils.importlib là một thư viện tương thích cho khi Python 2.6 vẫn được hỗ trợ. Nó đã lỗi thời kể từ khi Django 1.7, đã giảm hỗ trợ cho Python 2.6 và bị loại bỏ trong 1.9 cho mỗi chu kỳ không dùng nữa.

Sử dụng Python của import_module chức năng thay vì:

from importlib import import_module 

Lý do bạn có thể nhập nó từ django.utils.module_loadingimportlib.import_module được nhập khẩu trong mô-đun đó, nó là khôngmodule_loading trong bất kỳ cách nào xác định chức năng thực tế.

django.utils.module_loading.import_module không phải là một phần của API công khai, nó có thể bị xóa bất kỳ lúc nào nếu nó không còn được sử dụng nữa - ngay cả khi nâng cấp phiên bản nhỏ.

+0

Cảm ơn bạn, tôi chưa bao giờ nhận ra 'importlib' là một mô-đun dựng sẵn! một bài học hay mà tôi nên đào sâu hơn vào lần sau. – Matt

19

tôi giải quyết này như sau:

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

Trong tệp nào tôi có thể viết mã này? – Richardd

+1

Trong đó tôi có thể viết mã này? Tôi cập nhật django của tôi từ 1,7 đến 1,9. Và dừng công việc. – Richardd

+0

trông giống như một lỗi trong endless_pagination hoặc tương tự – tutuca

Các vấn đề liên quan