Django: ImportError: No module named XXX.settings

本文介绍了解决Django项目在WingIDE中因设置模块找不到而引发的错误的方法,提供了两种解决方案并讨论了如何正确配置环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果出现以下问题:

File "d:\__PythonProject\04-Dombres\2\manage.py", line 12, in <module>
  execute_from_command_line(sys.argv)
File "C:\Python27\Lib\site-packages\Django-1.8.17-py2.7.egg\django\core\management\__init__.py", line 354, in execute_from_command_line
  utility.execute()
File "C:\Python27\Lib\site-packages\Django-1.8.17-py2.7.egg\django\core\management\__init__.py", line 303, in execute
  settings.INSTALLED_APPS
File "C:\Python27\Lib\site-packages\Django-1.8.17-py2.7.egg\django\conf\__init__.py", line 48, in __getattr__
  self._setup(name)
File "C:\Python27\Lib\site-packages\Django-1.8.17-py2.7.egg\django\conf\__init__.py", line 44, in _setup
  self._wrapped = Settings(settings_module)
File "C:\Python27\Lib\site-packages\Django-1.8.17-py2.7.egg\django\conf\__init__.py", line 92, in __init__
  mod = importlib.import_module(self.SETTINGS_MODULE)
File "C:\Python27\Lib\importlib\__init__.py", line 37, in import_module
  __import__(name)

ImportError: No module named 2.settings

以前写Django相关的东西的时候,使用的Pycharm,不花钱的版本,自己也懒得去破解。这个IDE非常的Nice,但就是这个免费的不支持Django的调试。每次Django运行的时候都额外打开一个Cmd,在执行python manage.py runserver。很费劲。

后来在网上看到Wing IDE支持Django调试。果断转移阵地。加载我以前开发的Django的工程。Django 1.8.X的工程,使用startproject新建的时候,有两个文件夹名字是相同的,D:__PythonProject>tree /f site_pro
Folder PATH listing
Volume serial number is FCDA-1B12
D:__PYTHONPROJECT\ SITE_PRO
│ db.sqlite3
│ manage.py
└───site_pro
settings.py
urls.py
wsgi.py
init.py
但是我把第一个site_pro,改成了其他的名字也就是2。【SAE的版本号】
其实这个时候你使用cmd到manage.py目录,使用python manage.py runserver,是木有问题的,能够运行。
但是使用WingIDE使用会出现开头的问题。

两个解决方法:
1. 添加如下代码到manage.py中

     os.environ['DJANGO_SETTINGS_MODULE'] = "jxculture.settings"

2 . Wing IDE中的 Project/Project Properties
这里写图片描述
将DJANGO_SITENAME赋值为setting.py的文件夹名。

### 解决方案 在 Django 中遇到 `ModuleNotFoundError: No module named celery.utils.timeutils` 的问题,通常是由于 Celery 和 django-celery 版本不兼容引起的。以下是具体的分析和解决方案: #### 1. 问题原因 从引用内容可以看出,`celery.utils.timeutils` 模块在较新的 Celery 版本中已被移除或重构[^4]。具体来说: - 在 Celery 4.x 及更高版本中,`timeutils` 被替换为 `celery.utils.time` 模块。 - 如果项目中仍然使用了旧版的 `djcelery` 或者依赖了旧版 API,则会导致该错误。 #### 2. 解决方法 根据引用中的信息[^3],可以采取以下几种解决方法: #### 方法一:降级 Celery 版本 如果项目中仍然使用了 `django-celery`(已废弃),需要将 Celery 降级到与之兼容的版本。例如: ```bash pip install celery==3.1.26.post2 ``` 这将安装一个支持 `celery.utils.timeutils` 的旧版本 Celery。 #### 方法二:升级到最新版本并替换模块 如果希望使用最新的 Celery 版本,则需要调整代码以适配新的模块路径。例如,将以下代码: ```python from celery.utils.timeutils import timedelta_seconds ``` 替换为: ```python from celery.utils.time import timedelta_seconds ``` 同时,确保移除了对 `django-celery` 的依赖,因为该库已经不再维护,并且与 Celery 4.x 不兼容。 #### 方法三:检查 `settings.py` 配置 某些情况下,`settings.py` 文件中可能提前导入了与 Celery 不兼容的模块。根据引用内容[^2],可以尝试注释掉 `INSTALLED_APPS` 中的 `'django_celery_beat'`,然后重新运行项目以验证问题是否解决。 #### 方法四:版本兼容性调整 确保所有相关库的版本保持一致。根据引用内容[^3],以下是一个兼容的版本组合示例: ```plaintext celery==4.4.1 django-celery-beat==2.0.0 django-celery-results==1.0.4 Django==2.2.8 redis==3.2.0 ``` #### 示例代码 以下是一个完整的配置示例,适用于 Celery 4.x 和 Django 2.x: ```python # settings.py import os CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL', 'redis://localhost:6379/0') CELERY_RESULT_BACKEND = os.environ.get('CELERY_RESULT_BACKEND', 'redis://localhost:6379/0') # tasks.py from celery import Celery from celery.utils.time import timedelta_seconds app = Celery('myproject', broker=CELERY_BROKER_URL) @app.task def example_task(): print("Task executed") ``` ### 注意事项 - 确保虚拟环境中没有残留的旧版本 Celery 或 django-celery。 - 使用 `pip freeze > requirements.txt` 记录当前环境的依赖版本,便于后续排查问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值