I want to use a function defined in a Julia file with PyJulia. Running the code gives the following error:
RuntimeError: <PyCall.jlwrap (in a Julia function called from Python)
JULIA: UndefVarError: pqrfact not defined
The code in Julia is
% function.jl
import LowRankApprox
import Pkg
Pkg.add(“LowRankApprox”)
function f(A)
F = pqrfact(A)
B = A * F[:P]
return B
end
function h(A)
F = pqrfact(A)
z = F[:k]
return z
end
In Julia, this code runs perfectly.
The code in Python is:
import numpy as np
import julia
from julia.api import Julia
jl = Julia(compiled_modules=False)
j = julia.Julia()
j.include(‘function.jl’)
B = np.array([[1, 2, 3], [2, 1.0, 1], [1, 1, 1]])
print('B * F[: P] 1, j.f(B))
print('posto_numerico(B)= ', j.h(B))
I would take the time to learn Julia properly because these scripts aren’t ideal. The import in Julia doesn’t bring the function names such as pqrfact into scope, which is available inside LowRankApprox I am assuming. Are you sure your script works in Julia?
Also, you don’t Pkg.add("LowRankApprox") every time you run a script. This is a command that you run once when setting up the environment.
Please take the time to read the Julia documentation if you plan to use Julia more often in your work.