【问题标题】:Error running python script in RStudio and shiny app using reticulate在 RStudio 和使用 reticulate 的闪亮应用程序中运行 python 脚本时出错
【发布时间】:2020-05-19 19:53:40
【问题描述】:

我有一个 python 脚本,其中我使用“adtk”包定义了一个函数。使用网状,我从 R 调用我的函数并将其应用于一些数据。这完全没有错误。但是,当我尝试在闪亮的应用程序中做完全相同的事情时,它给了我以下错误:module adtk has no attribute transformer

RStudio 代码片段:

library(reticulate)
use_condaenv('my_conda_env')
source_python("my_python_script.py")

Python 脚本:

import adtk

def my_func():
  adtk.transformer.DoubleRollingAggregate()
  ...

【问题讨论】:

    标签: python r shiny reticulate


    【解决方案1】:

    听起来在本地运行代码可能会无意中使用系统 Python(及其 adtk 包),而不是使用可能缺少 adtk 和/或其某些模块的 conda 环境。

    当您运行library(reticulate) 时,reticulate 包将尝试初始化其最佳猜测版本的 Python,这可能不是您打算使用的版本。由于 Python 已经为您的会话初始化,之后运行 use_condaenv('my_conda_env') 可能会被忽略。 (您可以通过尝试运行 use_condaenv('my_conda_env', required = TRUE) 来测试它,而不是查看是否收到类似于:The requested version of Python (<conda env python path>) cannot be used, as another version of Python (<system python path>) has already been initialized. 的错误)

    要强制您的代码在您的 conda 环境中运行,请重新启动您的 R 会话并运行 reticulate::use_condaenv('my_conda_env', required = TRUE)。通过运行reticulate::py_config() 确认正在使用该环境。

    您可以通过viewing the installed packages 仔细检查您的 conda 环境中是否安装了正确版本的 adtk。最后,确保您运行 Shiny 应用程序的系统支持 conda(例如,conda isn't currently supported on shinyapps.io,但您可以改用 virtualenv。)

    【讨论】:

    • 感谢@Rani 的回复。您确实是对的。但是,我已经尝试了您的建议,但仍然收到相同的错误。实际上,将transformer子包和python脚本中的DoubleRollingAggregate导入为import adtk.transormer.DoubleRollingAggregate,效果很好!错误是因为我在 python 脚本中只做了import adtk。在后一种情况下,我在 R 的应用脚本中添加了import("adtk.transformer"),错误就消失了。我认为仅导入 adtk 不会使其子包在全局命名空间或 sys.modules 中可用!
    猜你喜欢
    • 1970-01-01
    • 2014-10-29
    • 2017-06-08
    • 2013-07-08
    • 2015-10-21
    • 1970-01-01
    • 2017-09-22
    • 2021-04-30
    • 2021-10-08
    相关资源
    最近更新 更多