Вызов функции Julia из файла Python

avatar
user249018
1 июля 2021 в 21:33
457
0
2

Мне нужно интегрировать два файла, один в python, другой в julia. Точнее, мне нужно вызвать функцию julia snapshot_sphere(b,h,data,m,r,d) из файла python. Более того, мне нужно указать параметры через командную строку. У меня были трудности с использованием PyJulia. На данный момент сохраняется сообщение об ошибке:

ModuleNotFoundError: Нет модуля с именем '_ctypes'

Я обнаружил некоторые зависимости, связанные с libffi-dev. Установка ничего не изменила. Что мне делать, чтобы вызвать функцию julia из файла python?

Вот код файла python:

import argparse
from julia import Main  
from PIL import Image, ImageShow
parser = argparse.ArgumentParser(description="Projection of the picture")
parser.add_argument(
    "-f", 
    "--filename", 
    type=str, 
    action="store", 
    dest="fname",
    help="Name of the picture"
)
parser.add_argument(
    "-d", 
    "--density", 
    type=int, 
    action="store", 
    dest="density",
    help="Number samples per Pixel"
)
parser.add_argument(
    "-r", 
    "--radius", 
    type=float, 
    action="store", 
    dest="radius",
    help="Radius of the sphere"
)
parser.add_argument(
    "-x", 
    type=float, 
    action="store", 
    dest="x",
    help="X coordinate of the center"
)
parser.add_argument(
    "-y", 
    type=float, 
    action="store", 
    dest="y",
    help="Y coordinate of the center"
)
parser.add_argument(
    "-z",
    type=float, 
    action="store", 
    dest="z",
    help="Z coordinate of the center"
)


args = parser.parse_args()
print(args)
m = (args.x, args.y, args.z)
print(m)
im = Image.open(args.fname)
b, h = im.size

data = list(im.getdata())

Main.b = b
Main.h = h
Main.m = m
Main.r = args.radius
Main.d = args.density
Main.data = data
Main.include("projekt1.jl")
result = Main.eval("snapshot_sphere(b,h,data,m,r,d)")
Источник
Gealber
1 июля 2021 в 22:12
1

Возможно, эта статья будет чем-то полезна.

Przemyslaw Szufel
2 июля 2021 в 11:33
1

Я советую поместить вашу функцию snapshot_sphere в модуль и загрузить модуль из Python, а затем вызвать функцию. Вот подробное руководство coderhelper.com/questions/64241264/… Если у вас есть другие требования, дайте мне знать.

user249018
2 июля 2021 в 12:10
0

@ Пшемыслав Шуфель. Большое спасибо. За исключением вызова функции snapshot_sphere, мне нужно будет передать окончательный список значений из среды julia обратно в среду python. Затем из среды python мне нужно сгенерировать вывод, который представляет собой сферу с проецируемым на нее изображением. Таким образом, он начинается и заканчивается на python, в julia завершаются только промежуточные шаги. Таким образом, сложно плавно перейти из одной среды в другую. Как вы думаете, это возможно?

user249018
2 июля 2021 в 19:08
0

@Пшемыслав Шуфель. Когда я делаю это, я получаю сообщение об ошибке: from julia import MyPackage. Это выдает ошибку: Traceback (most recent call last): File "c:/Users/bhaye/MyPackage/src/call_julia.py", line 13, in from julia import MyPackage File "C:\Python37\lib\site-packages\julia\core.py", line 260, in load_module raise ImportError("{} not found".format(juliapath)) ImportError: MyPackage not found. Я безуспешно пытался переместить MyPackage в несколько разных каталогов.

Przemyslaw Szufel
3 июля 2021 в 09:07
0

Что произошло, когда вы запустили `Pkg.activate(".\\MyPackage")`

Ответы (0)