PyCharm中Jupyter调用Django报ImportError: No module named 'local_settings'
解决PyCharm中Jupyter Notebook导入Django local_settings的问题
我一眼就揪出问题根源了——你在设置DJANGO_SETTINGS_MODULE的时候犯了个很容易忽略的小错误:把模块名写成了带.py后缀的文件名,这直接导致了ImportError。
第一步:修正DJANGO_SETTINGS_MODULE的核心错误
你的代码里这一行:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local_settings.py")
必须改成不带.py后缀的模块名称:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local_settings")
Django遵循Python的模块导入规则,只识别模块名(也就是去掉后缀的文件名),你加了.py之后,Python会误以为要找一个叫local_settings.py的模块,自然找不到对应的文件。
第二步:确认项目路径在Python搜索范围内
虽然你已经把项目路径加入了sys.path,但还是要验证一下路径是否正确。你可以在代码里加一行打印,确认项目根目录(包含manage.py的那个目录)确实在Python的搜索路径里:
import sys print(sys.path)
如果输出里没有你的项目根目录,就调整MYPROJECT的路径,确保它指向包含local_settings.py的父目录。
第三步:检查目录的Python包属性
你的local_settings.py和主settings.py在同一个目录下,且用了相对导入from .settings import *,这要求该目录是一个合法的Python包——也就是目录里必须有一个空的__init__.py文件。如果没有,直接创建一个空文件就行。
验证修改后的完整代码
调整后的代码应该是这样的,你可以直接测试:
import os, sys import dateutil.parser import django # 确保这里是包含manage.py的项目根目录的绝对路径 MYPROJECT = '/full/absolute/path/to/your/django/project' sys.path.insert(0, MYPROJECT) # 去掉.py后缀,只保留模块名 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local_settings") django.setup() # 测试是否能正常读取设置 from django.conf import settings print(settings.DEBUG) # 应该输出你在local_settings里设置的True
这样修改后,导入错误应该就能解决了。
内容的提问来源于stack exchange,提问作者Nori
相关产品推荐
相关产品推荐

