【问题标题】:Run a python code with arguments from Julia terminal从 Julia 终端运行带有参数的 python 代码
【发布时间】:2021-12-08 09:16:17
【问题描述】:

我想调用一个 python 脚本,它有一个函数,这个函数需要一个参数。您能否建议如何使用来自 Julia 环境的参数从 Julia 终端调用此 python 脚本。
我试过 pyimport, py"""run code""", exec,但不幸的是我还没有找到解决方案。
示例:
假设我有一个文件 my_test.py,我想从 Julia 运行它。 my_test.py 只包含一个函数和执行如下所示:

def print_one_number(my_number):  
    print(my_number)   
    return my_number  
print_one_number(my_number) 

在 Julia 中,我有一个变量 my_number_to_print。 现在我想使用在 Julia 环境中定义的参数 my_number_to_print 从 Julia 终端运行 .py 脚本。我该怎么做?
谢谢!

附:如果我们不需要将任何参数从 Julia “转移”到 .py 脚本,那么下面的效果很好: py"""exec(open("my_simple_test.py").read())"""

【问题讨论】:

  • 您是否在任何地方收到 --TypeError: print_one_number() missing 1 required positional argument: 'my_number'-- 消息,如果您自己运行该 Python 脚本会发生这种情况。
  • 您定义了def print_one_number(my_number):,因此您必须将其作为print_one_number(some_value) 运行。如果您运行print_one_number(),那么您应该会收到错误消息。
  • 在控制台/终端中运行时是否收到错误消息?始终将有问题的完整错误消息(从“Traceback”一词开始)(不在 cmets 中)作为文本(不是屏幕截图,不链接到外部门户)。还有其他有用的信息。
  • @BatWannaBe,抱歉,这只是心理捷径。谢谢你指出这一点。我在这里添加了参数“print_one_number(my_number)”,所以现在更精确了。
  • @furas,抱歉,这只是心理捷径。谢谢你指出这一点。我在这里添加了参数“print_one_number(my_number)”,所以现在更精确了。一般来说,我没有包含错误消息,因为我尝试了数十种不同的方法并且没有一种方法有效,所以我现在正在寻找如何从 Julia 终端运行 .py 脚本的通用解决方案,同时考虑到 .py 脚本期望在 Julia 环境中定义的一个变量。

标签: python julia pycall


【解决方案1】:

这是一个最小示例,其中也使用 PyCall 定义了 python 函数。但是,如果你想使用 .py 文件,你可以像在 python 中一样,将你需要的任何函数导入 PyCall 命名空间。然后,只需通过包装 py"function"(args1,args2) 来调用。

using PyCall
py"""
def print_one_number(my_number):  
    print(my_number)   
    return my_number
"""
my_number_to_print = 10
py"print_one_number"(my_number_to_print)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2021-07-19
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多