如何获取需要在 Synology NAS 的任务计划程序中运行的第 3 方库的 python 脚本?
Posted
技术标签:
【中文标题】如何获取需要在 Synology NAS 的任务计划程序中运行的第 3 方库的 python 脚本?【英文标题】:How to get python scripts requiring 3rd party libraries running in Task Scheduler of Synology NAS? 【发布时间】:2022-01-02 04:31:38 【问题描述】:现在我需要在 Synology NAS 的任务计划程序中运行一个使用 3rd 方库的 py 文件。我通过sudo su
获得了NAS终端的权限,并通过命令curl -k https://bootstrap.pypa.io/get-pip.py | python3
安装了pip。
脚本轮安装在“/var/packages/py3k/target/usr/local/bin”中。然后我尝试用sudo python3 -m pip install pandas
安装pandas,安装成功。然后我继续安装请求,日期时间也是如此。他们都成功了。
当我转到/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages
时,我可以在那里看到它们。
我实际上安排了 2 个 py 文件,一个是简单的 py 文件,另一个是使用 3rd 方库的 py 文件。简单的py文件在NAS中运行成功。它按照设定每分钟重复一次。但是使用3rd的那个还是不能跑。
下面是完美运行的简单py文件,
def main():
f = open("/volume1/homes/admin/python/result.txt", 'w+')
for i in range(10):
f.write("This is line 0:d\n".format(i+1))
f.close()
if __name__=="__main__":
main()
下面是不太简单的不能成功生成log.txt的,
from datetime import datetime
import os
def write_file(filename,data):
if os.path.isfile(filename):
with open(filename, 'a') as f: # in append mode
f.write('\n' + data)
else:
with open(filename, 'w') as f: # in write mode
f.write(data)
def print_time():
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
data = "This is to log each minute Cron runs, the time is: " + current_time
return data
if __name__=="__main__":
write_file('log.txt' , print_time())
有谁知道我的问题是什么?为什么不太简单的不能运行? OS 库在 Python 3.0 或更高版本中是默认的,所以我想我已经安装了所有必需的。
【问题讨论】:
任何错误信息?并且,您确定它没有成功运行,只是不在您认为它正在运行的地方吗?而不是log.txt
尝试/tmp/log.txt
。 (您可能没有注意到 /log.txt
或 ~root/log.txt
)
另外,不确定 synology 是否有它,但您可能希望将输出通过管道传输到“记录器”,例如:@hourly /path/to/mycommand.py args 2>&1 | logger -t cron.hourly.mycommand.py
感谢您的光临,我刚刚检查过,tmp 和 root 中没有 log.txt 文件
对不起,我不知道这是什么@hourly /path/to/mycommand.py args 2>&1 | logger -t cron.hourly.mycommand.py
这个有教程链接吗?我没有看到错误消息,因为我没有在终端中运行它。
@hourly
是在您的 crontab 中表示“每小时运行一次”的一种方式。 crontab.guru/every-hour
【参考方案1】:
尝试同时指定文件名和路径。
在你的情况下是write_file('/volume1/homes/admin/python/log.txt' , print_time())
。我假设您将 log.txt 文件放在与 result.txt 文件相同的位置。
我记得 synology nas 喜欢更明显的路径来查找文件。
【讨论】:
以上是关于如何获取需要在 Synology NAS 的任务计划程序中运行的第 3 方库的 python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章
如何仅使用一个浏览器 (Firefox) 在远程网络上同时访问多个 NAS 的 Synology-DSM?