用于import_module的Django 1.9 ImportError

Mat*_*att 37 python django django-1.9

当试图运行runservershell使用manage.py我得到一个ImportError例外.我正在使用Django 1.9.

ImportError: No module named 'django.utils.importlib'
Run Code Online (Sandbox Code Playgroud)

knb*_*nbk 65

django.utils.importlib是一个兼容库,用于何时仍支持Python 2.6.它已经过时了,因为Django 1.7已经放弃了对Python 2.6的支持,并且在每个弃用周期中被删除了1.9.

使用Python的import_module功能:

from importlib import import_module
Run Code Online (Sandbox Code Playgroud)

你可以从导入它的原因django.utils.module_loading是,importlib.import_module在该模块中的进口,这是不是因为module_loading以任何方式限定的实际功能.

由于django.utils.module_loading.import_module它不是公共API的一部分,因此如果不再使用它,它可以随时删除 - 即使在次要版本升级中也是如此.


Mat*_*att 21

我用以下方法解决了这个问题:

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
Run Code Online (Sandbox Code Playgroud)

  • 我可以在哪个文件中编写此代码? (5认同)
  • 我可以在哪个文件中编写此代码?我将我的 Django 从 1.7 更新到 1.9。并停止工作。 (2认同)
  • 谢谢你。我安装了 django-request 来监控流量。我在 plugins.py 和 traffic.py 中进行了您建议的更改,现在一切正常。 (2认同)
  • 对我来说更安全的解决方案 (2认同)