You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pyinfra在目标主机上执行任意Python代码

pyinfra在目标主机执行Python代码的方案

不需要提前手动上传脚本,有更简洁的原生实现方式,两种常用方案如下:

方案1:直接执行内嵌Python代码(绝大多数场景优先推荐)

使用python.execute操作即可,它会自动将你定义的Python函数序列化后传输到目标主机,在目标主机的Python环境中执行,无需处理临时文件的上传、清理逻辑。
示例代码如下:

from pyinfra.operations import python

# 该函数内的所有代码都会在目标主机侧执行
def target_runtime_code():
    # 用到的依赖导入必须写在函数内部
    import os
    print(os.getcwd())
    print(os.getuid())

python.execute(
    name="在目标主机执行自定义Python逻辑",
    function=target_runtime_code,
)

注意:python.execute传入的函数无法依赖外部作用域的变量、导入语句,所有用到的依赖必须在函数内部声明,否则目标主机执行时会报缺少依赖的错误。

方案2:上传脚本后执行(适合代码量较大、存在自定义依赖的场景)

如果你的Python逻辑代码量很大,或者依赖本地自定义模块,可以先将脚本上传到目标主机再执行,示例代码如下:

from pyinfra.operations import files, server

# 上传本地脚本到目标主机指定路径
files.put(
    name="上传Python脚本至目标主机",
    src="./本地脚本路径/my_script.py",
    dest="/opt/目标存放路径/my_script.py",
)

# 调用目标主机的Python解释器执行脚本
server.shell(
    name="执行目标主机上的Python脚本",
    commands=["python3 /opt/目标存放路径/my_script.py"],
)

补充说明

你之前使用的python.call接口本身的设计定位就是在主控端执行,用于根据目标主机的元数据动态生成部署逻辑,本来就不是用来执行目标端代码的,两个接口的功能定位不同不要混淆。

内容的提问来源于stack exchange,提问作者rSim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:48:03