我已经知道如何将 Julia 包导入到 Python 中。
但是,现在我使用以下命令创建了自己的简单 Julia 包:
using Pkg;Pkg.generate("MyPack");Pkg.activate("MyPack");Pkg.add("StatsBase")
其中文件MyPack/src/MyPack.jl具有以下内容:
module MyPack
using StatsBase
function f1(x, y)
return 3x + y
end
g(x) = StatsBase.std(x)
export f1
end
Run Code Online (Sandbox Code Playgroud)
现在我想通过juliacall调用f1和g函数在 Python 中加载这个 Julia 包。我已经pip3 install juliacall从命令行运行了。如何从 Python 调用上述函数?
我想把julia代码写在.py文件中,运行py文件时,julia代码也能正常通过,这样可以吗?我使用文本编辑器VScode、python3.10和julia1.7.2。
其实我知道这有点异想天开,但是今天我看到python代码在julia中成功运行。所以我想知道是否可以逆转。
module MyModule
using PyCall
function __init__()
py"""
import numpy as np
def one(x):
return np.sin(x) ** 2 + np.cos(x) ** 2
"""
end
two(x) = py"one"(x) + py"one"(x)
end
MyModule.two(2)
Run Code Online (Sandbox Code Playgroud) 我想从 python 中运行 julia 函数/脚本。我设法通过库调用 Julia 脚本juliacall。现在我想并行化它。因此,我创建了一个 python 多处理池并从每个工作人员调用 julia 脚本。但是,这会失败并显示以下消息:
python: /buildworker/worker/package_linux64/build/src/debuginfo.cpp:1634: void register_eh_frames(uint8_t*, size_t): Assertion `end_ip != 0' failed.
Run Code Online (Sandbox Code Playgroud)
我怎样才能进一步调试这个?这是我的最小工作示例:
python: /buildworker/worker/package_linux64/build/src/debuginfo.cpp:1634: void register_eh_frames(uint8_t*, size_t): Assertion `end_ip != 0' failed.
Run Code Online (Sandbox Code Playgroud)
还有朱莉娅剧本test_julia_simple.jl
for i in 1:10
println(i)
end
1+2
Run Code Online (Sandbox Code Playgroud)
附加信息:
import os
os.environ['PYTHON_JULIAPKG_EXE'] = "/home/user/.juliaup/bin/julia"
os.environ['PYTHON_JULIAPKG_OFFLINE'] = 'yes'
os.environ['PYTHON_JULIAPKG_PROJECT'] = '/home/user/julia/environments/v1.6/'
from juliacall import Main as jl, convert as jlconvert
from multiprocessing import Pool
from tqdm import tqdm
import ipdb
def init_worker():
import os
os.environ['PYTHON_JULIAPKG_EXE'] = …Run Code Online (Sandbox Code Playgroud)