从外部 python 脚本调用需要 root 特权(pynq 库)的 python 函数不断崩溃

from an external python script call a python function which require root previlege(pynq library) is continuously crashed

我必须从 python 函数中获取连续数据,它的一个库 (Overlay) 依赖于 root 权限。我必须 运行 使用 Flask python 函数。

首先,我搜索了如何授予对 python 脚本的 root 访问权限,但不幸的是,我没有找到任何模仿我的情况的方法。

我采用的方法 --
1/ Python 文件包含 Overlay 库假设名称是 child.py 其中包含一个函数名称 status_data

from pynq import PL
from pynq import Overlay
def main_path():
    ol = Overlay("/home/xilinx/pynq/overlays/design_4/design_1_wrapper.bit")
    return ol

def status_data():
    ol = main_path()
    data = '''my_code'''
    return data

2/ Flask 文件名为 app.py 我需要通过端点

的连续数据
from create_json_data import status_data
from flask import Flask, render_template
from flask import jsonify
'''mayn others lib, doesn't include'''

'''my_code'''
@app.route("/auto_update_table")
def parse_auto_update_table(name=None):
    data_json = status_data()
    return jsonify(data_json)

3/ 两个文件都在同一个文件夹中。我有 运行 和 child.pysudo python3 child.py 并且它有效。 sudo python3 app.py 执行 Flask 代码。我的猜测是 app.py 运行s 和 sudo 所以它会让所有其他依赖者拥有 root 权限。但是我失败了。它执行但过了一会儿它崩溃了。

是否有任何解决方法可以从 app.py[=44 以 root 权限调用 child.py 文件的 status_data 函数=] 没有崩溃?安全不是问题,所以我可以向任何脚本文件显示我的凭据,如果还需要,我可以手动提供 密码,但只提供一次 因为这是一个连续的过程,所以一遍又一遍地输入密码不是切实可行的解决方案。

据我所知,当您将管理员权限 (root) 授予可执行文件(您的 python 脚本)时。 无论可执行文件做什么,都具有管理员权限。 尝试使用 root 帐户本身调用它或 sudo -u root --login "python3 app.py" 看看它是否有效

再说不行也无济于事。如果你有追溯。添加它以帮助我们回答您或任何有帮助的信息。我帮不了你了

user10634362下方评论后编辑

我找到了解决办法。首先,我正在更改问题标题,因为在得到解决方案后,我明白现在的标题不适合这种情况。尽管给予 root 特权 非常容易。 sudo python3 app.py 完成工作。主要缺陷在

from pynq import Overlay

def main_path():
    ol = Overlay("/home/xilinx/pynq/overlays/design_4/design_1_wrapper.bit")
    return ol

我已多次调用此 main_path 函数,但它需要相当长的延迟时间,但那里没有。所以我遇到了意外的崩溃。声明后
ol = Overlay("/home/xilinx/pynq/overlays/design_4/design_1_wrapper.bit")
我已将 ol 作为全局变量传递给 status_data 函数,它解决了问题。