Проблемы с импортом определенного пакета Python (RDKit) в R с помощью reticulate - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблемы с импортом определенного пакета с использованием reticulate в R (Feather Spray, версия 3.5.1) и RStudio (версия 1.1.456) на моем MacBook Pro с High Sierra. Модуль Python, с которым я работаю, называется RDKit (https://github.com/rdkit/rdkit).. Пакет отлично работает на том же компьютере при импорте из командной строки Python (или Spyder в этом отношении) следующим образом:

>>> import rdkit
import rdkit # directory /Users/pleeferguson/apps/rdkit/rdkit
# /Users/pleeferguson/apps/rdkit/rdkit/__init__.pyc matches /Users/pleeferguson/apps/rdkit/rdkit/__init__.py
import rdkit # precompiled from /Users/pleeferguson/apps/rdkit/rdkit/__init__.pyc
dlopen("/Users/pleeferguson/apps/rdkit/rdkit/rdBase.so", 2);
import rdkit.rdBase # dynamically loaded from /Users/pleeferguson/apps/rdkit/rdkit/rdBase.so
>>>

Когда я пытаюсь импортировать RDKit в RStudio, используя сетку, происходит сбой следующим образом:

> reticulate::use_python("/Library/Frameworks/Python.framework/Versions/2.7/bin/python")
> library(reticulate)
> rdkit <- import_from_path("rdkit", "/Users/pleeferguson/apps/rdkit/rdkit")
Error in py_module_import(module, convert = convert) : 
  ImportError: No module named rdBase
> 

Я также попытался импортировать модуль непосредственно в R из терминала (вне RStudio), где я получил более информативное сообщение об ошибке:

> reticulate::use_python("/Library/Frameworks/Python.framework/Versions/2.7/bin/python")
> library(reticulate)
> rdkit <- import("rdkit")
Error in py_module_import(module, convert = convert) : 
  ImportError: dlopen(/Users/pleeferguson/apps/rdkit/rdkit/rdBase.so, 2): Library not loaded: @rpath/libRDKitRDBoost.1.dylib
  Referenced from: /Users/pleeferguson/apps/rdkit/rdkit/rdBase.so
  Reason: image not found

Detailed traceback: 
  File "/Users/pleeferguson/apps/rdkit/rdkit/__init__.py", line 2, in <module>
    from .rdBase import rdkitVersion as __version__
>

Я проверил, что действительно есть символическая ссылка с именем libRDKitRDBoost.1.dylib в нужном месте и указывающая на правильный файл dylib (он существует в каталоге lib пакета RDKit).

Кроме того, у меня нет проблем с импортом других пакетов (например, панд) в RStudio с использованием reticulate:

> reticulate::use_python("/Library/Frameworks/Python.framework/Versions/2.7/bin/python")
> library(reticulate)
> pd <- import("pandas", as = "pd")
> 

На моем другом MacBook Pro с более ранней версией R (Sincere Pumpkin Patch) и RDKit (сборка 2015 г.) пакет rdkit загружается очень хорошо (и работает) изнутри RStudio, используя сетку.

Есть идеи, что здесь может происходить? Я не думаю, что это проблема RStudio, так как я пытался установить новейшую ежедневную сборку RStudio, но получил то же поведение. Кроме того, тот факт, что я не могу получить пакет для импорта из R в терминале (вне RStudio), говорит о том, что это должно быть что-то еще.

...