【问题标题】:module not found error even though modules are in place即使模块就位,模块未找到错误
【发布时间】:2021-07-30 15:36:22
【问题描述】:

我之前遇到过这个错误,但在瞬间,它不知何故被修复了,但现在它似乎爬回来了,不知道问题出在哪里,提前谢谢

目录结构

food_deliveryapp
|- manage.py
|- food_deliveryapp
|- customers 
|- entries
|- restaurants
|    |- __init__.py
|    |- admin.py 
|    |- apps.py 
|    |- models.py
|       |- City
|       |- Restraunts 
|    |- views.py
|    |- tests.py
|    |- migrations 
|    
|- static
|- templates
 

我的模块和模型已就位,但仍然出现此错误

  Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\atif\PycharmProjects\my_proj_basic\virtual-env\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "C:\Users\atif\PycharmProjects\my_proj_basic\virtual-env\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    django.setup()
  File "C:\Users\atif\PycharmProjects\my_proj_basic\virtual-env\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\atif\PycharmProjects\my_proj_basic\virtual-env\lib\site-packages\django\apps\registry.py", line 114, in populate
    app_config.import_models()
  File "C:\Users\atif\PycharmProjects\my_proj_basic\virtual-env\lib\site-packages\django\apps\config.py", line 301, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\atif\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\atif\PycharmProjects\my_proj_basic\food_deliveryapp\menus\models.py", line 3, in <module>
    from restaurants.models import Restraunts
  File "C:\Users\atif\PycharmProjects\my_proj_basic\food_deliveryapp\restaurants\models.py", line 4, in <module>
    from customers.models import *
  File "C:\Users\atif\PycharmProjects\my_proj_basic\food_deliveryapp\customers\models.py", line 1, in <module>
    from restaurants.models import City
ImportError: cannot import name 'City' from 'restaurants.models' (C:\Users\atif\PycharmProjects\my_proj_basic\food_deliveryapp\restaurants\models.py)

【问题讨论】:

  • 这是一个循环导入。餐厅模型正在导入正在导入餐厅模型的客户模型...
  • 正如@AKX 所说,这看起来很像循环导入。如果您在customers\models.py 中包含代码,那么也许有一种方法可以在不导入模型并导致问题的情况下做到这一点。
  • 我该如何解决这个问题?我听说过循环导入
  • link - 此链接说明如何避免循环导入。看看是否有帮助。否则,发布您的 models.py 以提供更具体的建议。

标签: django django-models django-views


【解决方案1】:

如前所述,您的模型之间似乎有循环导入。

  • 您可以将导入从模块级别移到需要它们的函数中,或者
  • 如果您需要为外键等引用模型,请将它们命名为字符串 ("restaurants.City"),Django 稍后会解析它们。

【讨论】: