简体   繁体   中英

R reticulate package and python sub-modules

When trying to mimic some python code using R's reticulate package:

import_from_path("jwt_auth", "C:/Program Files/Python 3.5/Lib/site-packages/boxsdk/auth")

I get this error:

Error in py_module_import(module, convert = convert) : 
  SystemError: Parent module '' not loaded, cannot perform relative import

Detailed traceback: 
  File "C:\Program Files\Python 3.5\Lib\site-packages\boxsdk\auth\jwt_auth.py", line 13, in <module>
    from .oauth2 import OAuth2

Is there a better way to load sub-modules in R like such:

from boxsdk import JWTAuth

I haven't seen any solid solution. In the package I do something like this. Interestingly the drill down of reportlab can be done with dot notation.

# this is needed in case we use python in the R code rather than source_python
fitz <- NULL
pdfr <- NULL
pdfw <- NULL
repl <- NULL

.onLoad <- function(libname, pkgname) {
  # this will fail in package check
  reticulate::use_condaenv(condaenv = "myenv", required = TRUE)
  fitz <<- reticulate::import("fitz", delay_load = TRUE)
  pdfr_0 <- reticulate::import("PyPDF2", delay_load = TRUE)
  pdfr <<- pdfr_0$PdfFileReader
  pdfw <<- pdfr_0$PdfFileWriter
  repl <- reticulate::import("reportlab.pdfgen.canvas", delay_load = TRUE)
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM