可能的导入循环



我对我的代码做了一些更改,添加了一个模型,并添加了一些导入,现在突然间,当我试图运行一些管理风格的命令时,我已经编写了脚本,它们失败了,下面是跟踪:

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 75, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/site/contracts/core/management/commands/job.py", line 13, in <module>
    from contracts import jobs
  File "/home/site/contracts/jobs.py", line 8, in <module>
    from contracts.imports import crrs, crrs_bids
  File "/home/site/contracts/imports/crrs.py", line 17, in <module>
    from contracts.core.models import Company, Contract, Bid, Department, Category
  File "/home/site/contracts/core/models.py", line 26, in <module>
    class Company(models.Model):
  File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 243, in __new__
    new_class._prepare()
  File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 307, in _prepare
    signals.class_prepared.send(sender=cls)
  File "/usr/lib/python2.6/site-packages/django/dispatch/dispatcher.py", line 185, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/usr/lib/python2.6/site-packages/simple_history/models.py", line 50, in finalize
    history_model = self.create_history_model(sender)
  File "/usr/lib/python2.6/site-packages/simple_history/models.py", line 77, in create_history_model
    app = models.get_app(model._meta.app_label)
  File "/usr/lib/python2.6/site-packages/django/db/models/loading.py", line 179, in get_app
    self._populate()
  File "/usr/lib/python2.6/site-packages/django/db/models/loading.py", line 78, in _populate
    self.load_app(app_name)
  File "/usr/lib/python2.6/site-packages/django/db/models/loading.py", line 99, in load_app
    models = import_module('%s.models' % app_name)
  File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/usr/lib/python2.6/site-packages/debug_toolbar/models.py", line 9, in <module>
    dt_settings.patch_all()
  File "/usr/lib/python2.6/site-packages/debug_toolbar/settings.py", line 215, in patch_all
    patch_root_urlconf()
  File "/usr/lib/python2.6/site-packages/debug_toolbar/settings.py", line 203, in patch_root_urlconf
    reverse('djdt:render_panel')
  File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 503, in reverse
    app_list = resolver.app_dict[ns]
  File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 329, in app_dict
    self._populate()
  File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 267, in _populate
    for pattern in reversed(self.url_patterns):
  File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 365, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 360, in urlconf_module
    self._urlconf_module = import_module(self.urlconf_name)
  File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/site/contracts/urls.py", line 11, in <module>
    admin.autodiscover()
  File "/usr/lib/python2.6/site-packages/django/contrib/admin/__init__.py", line 29, in autodiscover
    import_module('%s.admin' % app)
  File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/site/contracts/core/admin.py", line 3, in <module>
    from contracts.core.models import Company, Contract, Bid, Department, Category
ImportError: cannot import name Company

我试过在job .py文件(定义命令行命令),views.py, admin .py和crrs.py模块中添加try/except块,该模块具有我试图运行的功能。当我尝试/将它们全部取出时,脚本工作但失败,因为模型没有在任何地方定义。

同样,当我使用shell_plus并直接导入作业文件或crrs文件时,我可以执行我想要的函数而不会出现任何错误。我已经遍历了两次提交之间更改的所有代码,没有明显的原因导致这个问题。

任何见解将不胜感激!

Company模型通过一系列导入依赖于url .py,而url .py又依赖于admin.py,而admin.py又依赖于Company。所以你有一个循环导入

我建议尝试通过注释admin.autodiscover()来解决这个问题,但是显示你的django版本将有助于确定这是否真的是罪魁祸首。

如果Django的版本是<仍然推荐使用autodiscover()。接下来要检查的是django-debug-toolbar自动补丁是否有问题,请查看安装说明,特别是"WARNING…">

最新更新