使用 Cron 运行 一个用 Spyder IDE 编写的 python 脚本
Using Cron to run a python script written in Spyder IDE
我已经使用 Spyder 作为 Anaconda 中的 IDE 编写了我的第一个 python 脚本。耶!该脚本从 google finance 中提取数据并将其通过电子邮件发送给我。当 运行 在 Spyder 中时,它工作正常。
现在我想在一天中的特定时间将该脚本安排到 运行。因此,经过研究,我尝试使用以下语法在 Cron 中将作业设置为 运行:
15 12 * * * users/paul/desktop/pythonscript.py
我认为这会 运行 12:15 处的脚本,但没有任何反应。
我尝试通过在 IDLE 中打开脚本并 运行ning 它或从终端 运行ning 它来进行试验,但我无法让其中任何一个工作,因为它告诉我 none 的模块被导入。
所以...谁能告诉我如何在特定时间将用 Spyder 编写的 python 脚本安排到 运行?
谢谢!
首先检查您的脚本是否包含 python shebang。
#!/usr/local/bin/python
上面将是您的 python 环境的路径,这将 运行 很好或更改您的 cron 语法,并告诉它调用 python 到 运行你的文件和
use your complete path for your file such as /home/users/.....
15 12 * * * python users/paul/desktop/pythonscript.py
您需要在 Cron 中指定 PATH 变量并确保 python3 在其中。 (从您的评论看来,您正在使用 python3,请确保您知道您使用的是 2 还是 3,只需键入 python 通常默认为 python 2)您可以正常像这样编辑:
crontab -e
然后在调用作业之前将完整路径添加到 python。编辑:此路径需要是您的 anaconda 环境 python 的路径(以避免系统上 python 的其他版本之间的兼容性问题)。
PATH=path/to/anaconda/env/bin #you need to look this up
15 12 * * * python3 users/paul/desktop/pythonscript.py
见How to get CRON to call in the correct PATHs
如果您不在 PATH 中包含包含 anaconda 环境 python3 的文件夹,它就不会 运行 完全像在 spyder 中那样。如果您想知道 python 的 anaconda 版本在哪里,请在 bash:
中输入
conda info --envs
conda env list #or you could try this
如果您的命令包含对 anaconda 环境的调用 python,那么您不需要 shebang
pythonscript.py。如果您不想在 crontab 的命令中包含对 python 的调用,则在第一行的 python 脚本中包含 shebang。
这些可能有用:
(见第二个答案)
https://conda.io/docs/user-guide/tasks/manage-environments.html(conda 环境管理指南)
目标 - 我使用 Spyder(conda base) 创建了 python 脚本 (Scipt X),我想在 cron 中安排它。
解决方案 - 我再创建一个脚本(脚本 Y),写在代码下方
预赛:-
通过在终端中输入以下命令切换到 conda env
- conda activate //切换到conda env
- which python //检查我的 python 版本(~anaconda3/bin/python)
脚本 Y 中的以下代码:
import os,import subprocess
subprocess.call("~anaconda3/bin/python <FULL SCRIPT X PATH>")
我在 crontab 中调用这个(脚本 Y)。
Crontab 条目
min hour date month week ~anaconda3/bin/python <full path to Script Y>
您现在可以在 crontab 中安排 spyder 脚本了。
我已经使用 Spyder 作为 Anaconda 中的 IDE 编写了我的第一个 python 脚本。耶!该脚本从 google finance 中提取数据并将其通过电子邮件发送给我。当 运行 在 Spyder 中时,它工作正常。
现在我想在一天中的特定时间将该脚本安排到 运行。因此,经过研究,我尝试使用以下语法在 Cron 中将作业设置为 运行:
15 12 * * * users/paul/desktop/pythonscript.py
我认为这会 运行 12:15 处的脚本,但没有任何反应。
我尝试通过在 IDLE 中打开脚本并 运行ning 它或从终端 运行ning 它来进行试验,但我无法让其中任何一个工作,因为它告诉我 none 的模块被导入。
所以...谁能告诉我如何在特定时间将用 Spyder 编写的 python 脚本安排到 运行?
谢谢!
首先检查您的脚本是否包含 python shebang。
#!/usr/local/bin/python
上面将是您的 python 环境的路径,这将 运行 很好或更改您的 cron 语法,并告诉它调用 python 到 运行你的文件和
use your complete path for your file such as /home/users/.....
15 12 * * * python users/paul/desktop/pythonscript.py
您需要在 Cron 中指定 PATH 变量并确保 python3 在其中。 (从您的评论看来,您正在使用 python3,请确保您知道您使用的是 2 还是 3,只需键入 python 通常默认为 python 2)您可以正常像这样编辑:
crontab -e
然后在调用作业之前将完整路径添加到 python。编辑:此路径需要是您的 anaconda 环境 python 的路径(以避免系统上 python 的其他版本之间的兼容性问题)。
PATH=path/to/anaconda/env/bin #you need to look this up
15 12 * * * python3 users/paul/desktop/pythonscript.py
见How to get CRON to call in the correct PATHs
如果您不在 PATH 中包含包含 anaconda 环境 python3 的文件夹,它就不会 运行 完全像在 spyder 中那样。如果您想知道 python 的 anaconda 版本在哪里,请在 bash:
中输入conda info --envs
conda env list #or you could try this
如果您的命令包含对 anaconda 环境的调用 python,那么您不需要 shebang pythonscript.py。如果您不想在 crontab 的命令中包含对 python 的调用,则在第一行的 python 脚本中包含 shebang。
这些可能有用:
https://conda.io/docs/user-guide/tasks/manage-environments.html(conda 环境管理指南)
目标 - 我使用 Spyder(conda base) 创建了 python 脚本 (Scipt X),我想在 cron 中安排它。 解决方案 - 我再创建一个脚本(脚本 Y),写在代码下方
预赛:- 通过在终端中输入以下命令切换到 conda env
- conda activate //切换到conda env
- which python //检查我的 python 版本(~anaconda3/bin/python)
脚本 Y 中的以下代码:
import os,import subprocess
subprocess.call("~anaconda3/bin/python <FULL SCRIPT X PATH>")
我在 crontab 中调用这个(脚本 Y)。 Crontab 条目
min hour date month week ~anaconda3/bin/python <full path to Script Y>
您现在可以在 crontab 中安排 spyder 脚本了。