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

如何在Mojo中向Python模块传递参数?

在Mojo中调用Python模块并传递命令行参数

要解决这个问题,你需要调整Mojo代码的导入方式,并根据Python模块的结构选择合适的参数传递方式,具体如下:

1. 修正模块导入

首先,Python.import_module不需要带.py后缀,正确的导入方式是:

let mypython = Python.import_module("myScript")

2. 两种参数传递方案

方案一:直接调用模块的main函数(推荐)

如果你的myScript.py中封装了main函数,并且支持传入参数列表(比如使用argparse时允许传入args参数),可以直接调用该函数并传递参数:

假设myScript.py的结构如下:

import argparse

def main(args=None):
    parser = argparse.ArgumentParser()
    parser.add_argument("-i", help="输入图片路径")
    parsed_args = parser.parse_args(args)
    # 你的业务逻辑
    return parsed_args.i

if __name__ == "__main__":
    main()

对应的Mojo代码:

from python import Python

fn use_my_module() raises:
    Python.add_to_path(".")
    let mypython = Python.import_module("myScript")
    # 传递参数列表,模拟命令行的"-i input.jpg"
    let result = mypython.main(["-i", "input.jpg"])
    print(result)

方案二:修改Python的sys.argv(适配无独立main函数的脚本)

如果myScript.py没有暴露main函数,而是直接在if __name__ == "__main__"代码块中处理命令行参数,你可以通过修改Python的sys.argv来模拟命令行调用:

from python import Python

fn use_my_module() raises:
    Python.add_to_path(".")
    # 导入Python的sys模块,修改命令行参数列表
    let sys = Python.import_module("sys")
    sys.argv = ["myScript.py", "-i", "input.jpg"]
    
    # 导入目标模块
    let mypython = Python.import_module("myScript")
    # 如果脚本的核心逻辑在__main__块中且导入时未自动执行,可通过exec运行脚本内容
    # Python.exec("exec(open('myScript.py').read())")

注意事项

  • 确保myScript.py位于当前工作目录,或者通过Python.add_to_path添加其所在路径
  • 如果脚本使用argparse,优先选择方案一,直接传参给main函数更简洁可控

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:33:30