Выбор среды Python для выполнения Python в Openrefire

#python #openrefine

#python #openrefine

Вопрос:

Я недавно установил Openrefine, и это здорово, особенно нравится опция выполнения python. В рамках выполнения python можно импортировать дополнительные пакеты, это видно на этом примере, где импортируется случайный пакет.

Пример выполнения Openrefine python, который возвращает случайное слово из первых 50 слов

Теперь я хочу использовать специальный пакет в инструменте Openrefine, который установлен в одной из моих сред Conda. могу ли я активировать конкретную среду Conda, которая будет выполняться в Openrefine tool?

Ответ №1:

TL; DR: просто оберните свой пакет Python с помощью FastAPI и общайтесь с помощью HTTP-запросов.

OpenRefine и Jython

OpenRefine использует Jython, Java-реализацию Python. Поэтому вы не можете «просто» активировать среду conda, но вы должны предоставить пакет, совместимый с Jython.

В OpenRefine wiki есть руководство, описывающее, как расширить Jython с помощью модулей PyPI.

Пожалуйста, обратите внимание, что в настоящее время 2.7 является новейшей реализацией Jython. Jython 3 все еще находится на стадии планирования и разработки. Подробности см. в дорожной карте Jython 3. Это затрудняет использование внешних библиотек, поскольку срок службы Python 2 истек 01.01.2020, и, соответственно, (большинство) библиотек перестали поддерживать Python 2.

Кроме того, некоторые пакеты Python полагаются на библиотеки C, которые несовместимы с Jython. Проверьте приложение A окончательного руководства по Jython для получения более подробной информации об использовании внешних инструментов и библиотек.

Альтернативное решение с использованием FastAPI

Лично мне проще просто обернуть пакеты Python, которые я хочу использовать, с помощью FastAPI и обмениваться данными с OpenRefine через HTTP-запросы. В зависимости от ваших данных вы можете добавлять новые столбцы, извлекая URL-адреса или используя запросы GET / POST в Jython.

Недавно я создал GitHub Gist, показывающий, как обернуть более ТОНКИЙ компонент пространственной модели с помощью FastAPI, который затем будет использоваться через OpenRefine.