#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.