项目结构示例

/home/ubuntu/project/
├── py310/ # Python 虚拟环境目录
│ ├── bin/python
│ └── …
└── xxxJob/
├──── init.py
├──── load_env.py
├──── cloudScript/
│ ├──── init.py
│ └──── signHiFiNi.py
└──


创建虚拟环境并安装依赖

cd /home/ubuntu/project
python3 -m venv py310
source py310/bin/activate
pip install -r requirements.txt
`

测试脚本运行是否正常

在项目根目录下(/home/ubuntu/project)执行:

/home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi

✅ 如果正常执行,无 ModuleNotFoundError,说明导入路径没问题。


在 crontab 中配置任务

编辑任务:

crontab -e

添加以下内容(示例为每 5 分钟执行一次):

*/5 * * * * cd /home/ubuntu/project && /home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi >> /home/ubuntu/project/xxxJob/sign.log 2>&1

命令详解

部分 说明
cd /home/ubuntu/project 切换到项目根目录(包路径的起点)
/home/ubuntu/project/py310/bin/python 指定虚拟环境中的 Python 解释器
-m xxxJob.cloudScript.signHiFiNi 以模块形式执行脚本,自动解析 import
>> sign.log 2>&1 追加输出和错误到日志文件

查看日志输出

tail -f /home/ubuntu/project/xxxJob/sign.log

常见问题

问题 原因 解决方案
ModuleNotFoundError: No module named 'load_env' Python 从 cloudScript/ 启动导致路径错误 -m 模块方式执行或设置 PYTHONPATH
python 命令在 cron 中找不到 cron 没加载环境变量 写 Python 绝对路径 /home/ubuntu/project/py310/bin/python
脚本在手动运行正常但 cron 不执行 环境变量不同 cd 切换目录 + 绝对路径执行
没有输出 cron 的 stdout/stderr 没被捕获 重定向 >> /path/to/log 2>&1

备用方案(若不使用包导入)

如果你的脚本直接用文件路径运行(非 -m 模式),可以设置临时 PYTHONPATH

*/5 * * * * cd /home/ubuntu/project/xxxJob && PYTHONPATH=$(pwd) /home/ubuntu/project/py310/bin/python cloudScript/signHiFiNi.py >> /home/ubuntu/project/xxxJob/sign.log 2>&1

验证任务是否已注册

crontab -l

输出类似:

*/5 * * * * cd /home/ubuntu/project && /home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi >> /home/ubuntu/project/xxxJob/sign.log 2>&1

推荐实践总结

场景 推荐命令
长期稳定运行(生产) /home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi
单文件测试 PYTHONPATH=$(pwd) python cloudScript/signHiFiNi.py
临时调试 source py310/bin/activate && python ...
日志查看 tail -f sign.log

维护建议:

  • 定期清理日志文件;
  • 用绝对路径一律防止路径丢失;
  • 不要依赖 $(pwd) 或相对路径;
  • 确保 cron 使用的用户有正确的权限。

作者备注:
这份指南适用于 Ubuntu / Debian / CentOS 等常见 Linux 服务器。
建议测试命令先在终端中手动运行一次,确认无误后再加入 crontab。

作者:admin  创建时间:2025-11-07 11:48
最后编辑:admin  更新时间:2025-11-07 11:56