您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python脚本未在调用pysaunter的crontab中运行

Python脚本未在调用pysaunter的crontab中运行

经过大量的试验和错误,并且在网上获得了许多很多stackoverflow.com文章和其他教程,并且在Perl脚本的帮助下,我发现它执行了类似的操作,因此我能够弄清楚要使此方法起作用需要做些什么。 。

以下是确保正确设置所有步骤的步骤:

确保在.profile或.bash_profile中的PYTHONPATH此处,以及更多信息。请在此处)中具有所需的变量,以用于要在其中测试脚本的任何shell,以确保其有效。

编辑您的crontab,以在cron作业中包含运行脚本所需的目录

一)一定要包括在PATH变量(。)作为解释的根目录在这里。基本上,如果您使用命令运行可执行文件,则它必须能够找到存储可执行文件的根目录或目录,以及以下可能的目录:(/ sbin:/ bin:/ usr / sbin:/ usr / bin)。

a)如下所示:

    * * * * cd /Users/user/Documents/foo; bar -l doSomething -v

第一种方法如下所示:

    ... #some script calls
my_env = os.environ.copy()
my_env["PYTHONPATH"] = "{}:{}".format(os.environ["PATH"] ,"<path you want to include>")
os.chdir("<path/to/desired/directory>")
subprocess.Popen(<call_as_string>, env=my_env, shell=True)

第二个看起来像这样:

    ... #some script calls
os.environ["PYTHONPATH"] = "{}:{}".format(os.environ["PATH"] ,"<path you want to include>")
os.chdir("<path/to/desired/directory>")
subprocess.Popen(<call_as_list_of_arguments)

由于可执行文件所需的路径包含在它被称为从壳佣工目录,这是必要的环境变量传递给可执行文件解释[这里。不过,我发现,在环境中修改PATH变量不适用于cron作业,而设置PYTHONPATH则可以。我在这里读到,shell使用PATH变量仅查找可执行文件,因此对于cronjob中的新shell,您需要将其传递给PYTHONPATH来寻找新的python模块。(这在Python文档中也有解释。)

问题中引用的子流程文档中说明了两种不同方法间的差异,但是可以在此处找到有关此模块的很好的教程。

python 2022/1/1 18:35:19 有522人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶