Образ полиглота GraalVM с Python - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь запустить собственный образ полиглота с java / python. Я могу создать собственный образ с помощью этой командной строки:

 native-image --language:python javapython

Но при запуске с . / javapython он выдает мне эту ошибку:

Ошибка при запуске, не удалось прочитать основную библиотеку из /lib-graalpython/builtins.py. Возможно, вам нужно установить python .CoreHome и python .StdLibHome.

В поисках этой инструкции я нашел это:

--python.CoreHome=<String>
--python.StdLibHome=<String>

Я попытался добавить его с помощью graal python, с CoreHome похоже, что он работает, но с StdLibHome выдает мне еще одну ошибку:

Исходное исключение:

Отслеживание (последний вызов последний): Файл «/importlib/_bootstrap.py», строка 986, в _find_and_load ModuleNotFoundError: Нет модуля с именем ' site '

Затем снова запустите . / javapython, но он показывает мне ту же ошибку.

Кто-нибудь знает, как настроить эти пути или почему это произошло? Спасибо

1 Ответ

0 голосов
/ 13 июля 2020

Graal Python должен знать, где искать файлы основной библиотеки, а также Python файлы стандартной библиотеки. Обычно это настраивает программа запуска ($GRAALVM_HOME/bin/graalpython), но если вы встраиваете Graal Python в свое приложение, вам необходимо предоставить его самостоятельно.

Одна из возможностей - экспортировать GRAAL_PYTHONHOME, указывая на $GRAALVM_HOME/jre/languages/python (в сборках GraalVM на основе JDK11 это будет $GRAALVM_HOME/languages/python). Другой - предоставить все параметры при построении контекста:

Context context = Context.newBuilder()
              .option("python.CoreHome", "/path/to/graalvm/jre/languages/python/lib-graalpython")
              .option("python.StdLibHome", "/path/to/graalvm/jre/languages/python/lib-python/3")
              // ...
              .build()
...