ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

schedule 库安装完全指南:Python 版本要求、可选依赖与多平台安装方式

schedule 库安装完全指南:Python 版本要求、可选依赖与多平台安装方式 任务调度后端【免费下载链接】schedulePython job scheduling for humans.项目地址https://gitcode.com/gh_mirrors/sc/schedule点击查看免费下载导读schedule 是一个面向人类的轻量级进程内 Python 任务调度库用于以友好、直观的链式语法周期性运行 Python 函数。本文以官方 安装文档 为主体系统讲解其 Python 版本支持范围、唯一的可选依赖 pytz、pip 与各主流 Linux 包管理器的安装步骤并结合 仓库源码 与 构建配置 深入说明时区依赖的底层原理与安装后的验证方法帮助你在各种环境中一次性装好、用对 schedule。一、Python 版本支持3.7 到 3.12官方安装文档明确给出了 schedule 的 Python 版本支持矩阵推荐使用最新版本的 Pythonschedule 在Python 3.7、3.8、3.9、3.10、3.11、3.12上经过测试。这一声明在仓库中有多处印证setup.py 中通过python_requires3.7对安装时的解释器版本进行硬性约束并在classifiers中逐个声明了Programming Language :: Python :: 3.7至3.12pyproject.toml 同样声明requires-python 3.7模块 schedule/init.py 的模块 docstring 也注明 Tested on Python 3.7, 3.8, 3.9, 3.10, 3.11 and 3.12。想在更早的 Python 版本上使用 schedule官方文档指引查阅 HISTORY.rst仓库内的版本历史文件其中记录了各版本对 Python 的支持变化。例如 1.2.0 版本2023-04-10Dropped support for Python 3.6, add support for Python 3.10 and 3.111.0.0 版本2021-01-20Dropped Python 2.7 and 3.5 support, added 3.8 and 3.9 support。也就是说旧版本如 1.2.0 之前的 1.1.0仍可用于更早的解释器但建议优先跟随最新版本。二、依赖说明唯一的可选依赖 pytzschedule 以零外部依赖、极轻量为设计目标README 中明确 Very lightweight and no external dependenciespyproject.toml 中dependencies []即为空。但官方安装文档指出它存在1 个可选依赖仅当你使用.at()并传入时区参数timezone时才必须安装 pytz。也就是说绝大多数普通用法every(10).minutes.do(job)、every().day.at(10:30).do(job)等完全不需要任何第三方库只有需要在指定时区下于特定时刻运行任务时才需要 pytz。这个条件依赖在仓库中有清晰的代码证据。查看 schedule/init.py 中Job.at()的实现约 L471-L508def at(self, time_str: str, tz: Optional[str] None): ... if tz is not None: import pytz # 仅在传入 tz 时才导入 pytz if isinstance(tz, str): self.at_time_zone pytz.timezone(tz) elif isinstance(tz, pytz.BaseTzInfo): self.at_time_zone tz else: raise ScheduleValueError(Timezone must be string or pytz.timezone object) ...可见 pytz 的导入被刻意放在tz is not None分支内延迟导入因此未安装 pytz 且不使用时区功能的用户完全不受影响。同时pyproject.toml 提供了标准的可选依赖分组[project.optional-dependencies] timezone [pytz]即安装时可以通过pip install schedule[timezone]一次性装齐带时区支持的版本。此外时区功能的实现细节也印证了 pytz 的深度参与在_schedule_next_run()L700-L748与_correct_utc_offset()L773-L817中代码在目标时区上下文内完成下次运行时刻的计算并调用at_time_zone.normalize()处理夏令时DST切换导致的 UTC 偏移变化——这正是 pytz 擅长的场景。从源码结构看这正是 HISTORY.rst 中 1.2.0 版本 Add timezone support for .at() 以及 1.2.1/1.2.2 中连续修复跨时区调度 bug#583、#601、#602、#604、#623的核心区域也解释了为什么时区功能会单独引入一个可选依赖。三、标准安装方式pip推荐官方安装文档明确pip 是推荐的安装方式在命令行执行$ pip install schedule安装完成后 schedule 即可导入使用官方文档建议接着查看 examples 示例文档 或回到 文档总览 继续学习。安装完成后可以通过以下方式验证安装是否成功参考 FAQ# 查看已安装的版本号应 0.6.0当前仓库对应的版本为 1.2.2见 setup.py $ pip3 list | grep schedule如果你需要时区支持推荐一次性安装可选依赖$ pip install schedule[timezone]四、通过其他包管理器安装官方安装文档同时列出了若干 Linux 发行版/AUR/conda 上的安装途径并特别提醒这些包并非本项目的维护者维护无法保证与最新发布版本同步如果不介意旧版本可以使用。原文明确标注了其中 Ubuntu 20.04 LTS 及更早、Debian buster 及更早的包停留在0.3.22015 年使用时需自行权衡。UbuntuDebian 系$ apt-get install python3-schedule⚠️OUTDATED!据官方文档Ubuntu 20.04LTS 及以下的软件包仍是 2015 年的 0.3.2 版本。Debian$ apt-get install python3 schedule⚠️OUTDATED!据官方文档buster 及以下的软件包仍是 2015 年的 0.3.2 版本。说明0.3.2 与当前 1.2.2 之间差距巨大1.x 系列引入了类型注解、until()、repeat装饰器、标签查询、时区支持等能力详见 HISTORY.rst因此从系统源安装时请充分评估功能差异。FAQ 中也给出了 apt 安装后的验证方式dpkg -l | grep python3-schedule。Arch LinuxAURArch Linux 用户仓库AUR中提供名为python-schedule的包。使用 yay 的用户执行$ yay -S python-scheduleCondaAnacondaschedule 已发布到 condaAnaconda 包管理器的 conda-forge 渠道该渠道的维护方是conda-forge 项目并非 schedule 项目维护者。安装方式遵循 conda-forge 上 schedule feedstock 的安装说明核心命令形如$ conda install -c conda-forge schedule五、手动安装不推荐如果你没有包管理器权限或需要更多控制权官方文档提供了手动安装方案schedule 库本身只有一个单文件源码schedule/__init__.py且为 MIT 许可仓库根目录 LICENSE.txt复制成本极低。步骤为打开schedule/__init__.py即仓库中的 schedule/init.py复制其全部代码在你的项目中创建一个名为schedule的包目录将代码粘贴到其中的__init__.py文件里。官方文档同时强烈警告高度不推荐这种方式因为此后你将无法获得自动更新也无法通过包管理器跟踪版本。需要提醒的是若选择手动复制应确保复制的是与你所用 Python 版本匹配的最新源码并连同 schedule/py.typed类型标记文件1.2.0 起随包发布一起考虑以保留完整的类型标注能力。六、安装后的常见问题排查结合 FAQ 中与安装直接相关的两条高频报错这里给出对应解法ModuleNotFoundError: No module named schedule可能的原因与排查顺序确实没装执行pip3 list | grep schedule验证应返回schedule 1.2.2或更高版本pip 与运行解释器不一致例如用 Python 2 的 pip 安装却用 Python 3 运行。解决改用pip3 install schedule虚拟环境问题确认当前运行脚本的终端位于安装 schedule 的同一 virtualenv 中IDE 解释器配置问题PyCharm/VSCode 等 IDE 可能指向了不同的 Python 解释器可先在 IDE 外的命令行运行同一脚本验证。ModuleNotFoundError: No module named pytz这是在.at()中设置了时区、但未安装 pytz时触发的错误对应源码中 schedule/init.py 的延迟导入分支。解法执行pip install pytz或直接安装schedule[timezone]可选依赖组。七、快速验证安装成功的用法安装完成后可以用 README 中最经典的用法快速验证这段代码也是官方文档推荐的入门骨架可在 README.rst 中找到import schedule import time def job(): print(Im working...) schedule.every(10).minutes.do(job) schedule.every().hour.do(job) schedule.every().day.at(10:30).do(job) schedule.every(5).to(10).minutes.do(job) schedule.every().wednesday.at(13:15).do(job) while True: schedule.run_pending() time.sleep(1)若要体验时区功能需先安装 pytz可参照源码中.at()的tz参数用法schedule.every().day.at(12:42, Europe/Amsterdam).do(job)如果at_time_zone被正确解析_schedule_next_run()schedule/init.py会在目标时区下计算下次运行时刻并在夏令时切换时通过normalize()与_correct_utc_offset()校正偏移。小结schedule 的安装路径清晰、成本极低——常规场景pip install schedule即可零依赖开箱即用仅当需要.at()时区调度时才额外安装 pytz推荐pip install schedule[timezone]。对于 apt/AUR/conda 等系统包务必留意版本陈旧风险必要时对照 HISTORY.rst 评估功能差异。安装中遇到问题可优先查阅 FAQ 中的排查清单。赞分享任务调度后端【免费下载链接】schedulePython job scheduling for humans.项目地址https://gitcode.com/gh_mirrors/sc/schedule点击查看免费下载相关推荐Scrapy 安装指南Python 版本要求、conda/pip 安装方式、可选 extras 与平台特定配置全解Scrapy 安装指南Python 版本要求、conda/pip 安装方式、可选 extras 与平台特定配置全解 本文基于 Scrapy 官方安装文档 d网页爬虫后端asdf 依赖清单与安装指南Bash 与 Git 版本要求及多平台安装命令asdf 依赖清单与安装指南Bash 与 Git 版本要求及多平台安装命令 导读 本篇技术指南围绕 asdf 官方文档 Dependencies 页面 httCLI开发工具Paper 服务器插件实测指南10 个插件按服务器生长阶段装完Paper 服务器插件实测指南10 个插件按服务器生长阶段装完 本文是 Paper 服务器的插件选型与安装指南Paper 是目前使用最广泛的高性能 Mine后端游戏开发上一篇黑神话悟空内置实时地图插件3分钟快速上手终极指南下一篇SmartBMS进阶深入理解Attiny模块与I2C通信的底层实现原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表