执行docker-compose迁移命令时遇ModuleNotFoundError: No module named 'accounts'错误
解决Django
ModuleNotFoundError: No module named 'accounts' 问题 首先你执行的命令存在两个拼写错误:
- 命令应为
makemigrations(你少写了末尾的s) - 目标应用名称是
accounts(你写成了accountss多了一个s)
先修正命令为:
docker-compose exec web python core/manage.py makemigrations accounts
如果修正命令后仍然报错,按以下步骤排查:
1. 验证accounts应用的目录结构
确保accounts是合法的Django应用,目录下必须包含:
__init__.py(空文件即可,标记该目录为Python模块)apps.py文件,其中的AppConfig类name属性必须为'accounts',示例:# accounts/apps.py from django.apps import AppConfig class AccountsConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'accounts' # 这里必须和INSTALLED_APPS里的名称一致
2. 检查INSTALLED_APPS配置
确保settings.py的INSTALLED_APPS中正确添加了accounts,两种写法都可以:
# settings.py INSTALLED_APPS = [ # ... 其他应用 'accounts', # 直接写应用名称 # 或者用完整的AppConfig路径 # 'accounts.apps.AccountsConfig', ]
3. 确认容器内代码路径
Docker环境下,检查容器内/code目录是否存在accounts文件夹:
docker-compose exec web ls /code
如果不存在,确认docker-compose.yml中的卷挂载配置是否正确,确保本地的accounts目录挂载到了容器的/code路径下。
4. 验证Python路径
如果accounts目录在core子目录下,需要在INSTALLED_APPS中写'core.accounts',同时确保core目录下有__init__.py文件。
完整报错堆栈
Traceback (most recent call last): File "/code/core/manage.py", line 22, in <module> main() File "/code/core/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 416, in execute django.setup() File "/usr/local/lib/python3.12/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python3.12/site-packages/django/apps/registry.py", line 91, in populate app_config = AppConfig.create(entry) ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/django/apps/config.py", line 178, in create mod = import_module(mod_path) ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1324, in _find_and_load_unlocked ModuleNotFoundError: No module named 'accounts'
内容的提问来源于stack exchange,提问作者Mohsen Kordestani
相关产品推荐
相关产品推荐

