ModuleNotFoundError:没有名为“apscheduler.schedulers”的模块; 'apscheduler' 不是一个包

问题描述 投票:0回答:1

ModuleNotFoundError:没有名为“apscheduler.schedulers”的模块; 'apscheduler' 不是一个包

出现这样的错误。

我已经安装了apscheduler库。

使用的版本:python3.11.0

使用的框架:Django

apscheduler.py

from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta
import pytz
import requests
import json
from .models import Todo

def notify_todo():
    #現在の時刻を取得
    now = datetime.now(pytz.timezone('Asia/Tokyo'))
    #締切が24時間以内のTODOリストを取得
    todos = Todo.objects.filter(deadline__range=(now, now + timedelta(days=1)))

    for todo in todos:
        #LINE NotifyのAPIトークンを取得
        api_token = 'xxxxxxxxxxxxxxxxxxxx'

        #通知メッセージの作成
        message =  f"【{todo.title}】\n締切時間:{todo.deadline.strftime('%Y/%m/%d %H:%M')}\n詳細:{todo.description}"

        #LINE Notifyに通知を送信
        headers = {'Authorization': f'Bearer {api_token}'}
        payload = {'message': message}
        requests.post('xxxxxxxxxxxxxxxxxxxxxxx', headers=headers, data=payload)


#BackgroundSchedulerの設定
scheduler = BackgroundScheduler(timezone='Asia/Tokyo')
scheduler.add_job(notify_todo, 'interval', minutes=10)#10分ごとに実行
scheduler.start()

models.py

from django.db import models


class Todo(models.Model):
    title = models.CharField("タスク名", max_length=30)
    description = models.TextField("詳細", blank=True)
    deadline = models.DateField("締切")
    ttime = models.TimeField("")

    def __str__(self):
        return self.title

apps.py

from django.apps import AppConfig


class TodoConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'todo'

def ready(self):
    from .apscheduler import start
    start()

python django apscheduler
1个回答
0
投票

听起来你有一个模块

apscheduler
在某个地方被导入而不是实际的包。你的项目目录里有
apscheduler.py
吗?如果是,请将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.