У меня есть Python-интерфейс библиотеки графов, написанный на C-igraph (название библиотеки). Мне нужно вызвать модули Python, относящиеся к этой библиотеке графов, из кода Java. Похоже, ядро библиотеки находится в c. Это ядро было импортировано в Python, а интерфейсы к функциям, встроенным в ядро, доступны в Python. Остальная часть кода моего проекта написана на Java, и поэтому я хотел бы также вызывать графовые функции с помощью Java.
Jython - который позволяет вам вызывать модули Python с помощью Java, был одним из вариантов. Я продолжал пытаться Jython обнаружить, что он не будет работать в моем случае, поскольку основной код находится в C, и Jython не будет поддерживать все, что импортируется как ac dll в python Я также подумал о том, чтобы выбрать метод вызова графа непосредственно в c. Это без прохождения кода Python. Я предполагаю, что должно быть что-то, что позволяет вам вызывать c-код из Java, хотя я не очень хорош в C, поэтому я не пошел на это.
Мне кажется, что в крайнем случае я выполняю интерпретатор Python из командной строки, используя Java. Но это грязно и бесстыдно. Также, чтобы иметь дело с результатами, полученными в коде Python, мне нужно будет записать результаты в файл и прочитать их обратно в Java. Опять грязный путь.
Есть что-то, что кто-нибудь может мне предложить? Спасибо каждому, кто уделил время.
Спасибо, Игал за ответ. Я посмотрел на это. На первый взгляд кажется, что он просто вызывает скрипт Python.
Jep jep = new Jep(false, SCRIPT_PATH, cl);
jep.set("query", query);
jep.runScript(SCRIPT_PATH + file);
jep.close();
Разве это не очень похоже на то, что мы сделали бы, если бы вызывали интерпретатор python из командной строки через код Java.
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("python test.py");
Беспокойство вызывает то, как я могу использовать результаты, сгенерированные скриптом Python. Наивный способ - записать их в файл и прочитать на Java. Я ищу более разумный подход. Спасибо за предложение в любом случае.