Django执行makemigrations报错:找不到指定模块,无法定位错误文件
解决Django迁移时的ModuleNotFoundError错误
问题根源
这明显是代码粘贴失误导致的:INSTALLED_APPS里的'django.contrib.contenttyfrom datetime import timedelta',是把两个完全不相关的内容粘到一行了——正确的Django内置应用是django.contrib.contenttypes,而from datetime import timedelta是Python标准库的导入语句,根本不该出现在INSTALLED_APPS里。另外timedelta是Python自带的模块,不需要用pip安装。
修复步骤
- 找到项目中的
settings.py文件(对应你的路径是/home/anton/Documents/project2/backend/my_backend/settings.py) - 打开后定位到INSTALLED_APPS配置块,把错误的那行替换成:
'django.contrib.contenttypes', - 把
from datetime import timedelta这行移到settings.py的顶部导入区域(和其他import语句放在一起),或者放到需要用到它的配置块中(比如使用DRF的JWT认证时,会在REST_FRAMEWORK配置里用到这个) - 保存文件后,重新运行迁移命令:
python manage.py makemigrations python manage.py migrate
错误详情
Traceback (most recent call last): File "/home/anton/Documents/project2/backend/my_backend/manage.py", line 22, in <module> main() File "/home/anton/Documents/project2/backend/my_backend/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/home/anton/Documents/project2/backend/pr2_venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/home/anton/Documents/project2/backend/pr2_venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 416, in execute django.setup() File "/home/anton/Documents/project2/backend/pr2_venv/lib/python3.12/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/home/anton/Documents/project2/backend/pr2_venv/lib/python3.12/site-packages/django/apps/registry.py", line 91, in populate app_config = AppConfig.create(entry) ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/anton/Documents/project2/backend/pr2_venv/lib/python3.12/site-packages/django/apps/config.py", line 193, in create import_module(entry) File "/usr/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 1324, in _find_and_load_unlocked ModuleNotFoundError: No module named 'django.contrib.contenttyfrom datetime import timedelta'
原错误的INSTALLED_APPS配置
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttyfrom datetime import timedelta', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'auth_app', 'corsheaders' ]
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

