【问题标题】:How to import python packages using Reticulate in R如何在 R 中使用 Reticulate 导入 python 包
【发布时间】:2020-08-24 22:01:07
【问题描述】:

我已经学习 python 大约一年了。我刚刚下载了 R 以尝试将 Python 与Reticulate 一起使用。我的所有 python 包 pip 都安装在名为 base 的 anaconda 基础环境中。除了熊猫,我正在让一切正常工作。这是最奇怪的事情。

这是我的代码:

{r}
library(reticulate)
use_condaenv(“base”)
{python}
import numpy as np
import matplotlib.pyplot as plt

这很好用,我可以在 RStudio 中使用这两个包。但是,当我尝试import pandas as pd 时,我得到了错误

ImportError: No Module named pandas...

我肯定在这个基础环境中安装了 pandas pip 以及其他两个包。可以肯定的是,我再次对所有 3 个运行 pip install 进行了仔细检查。为什么熊猫在世界上不起作用?太令人沮丧了! FWIW:seaborn(和其他软件包)也不起作用,也已安装。

【问题讨论】:

  • 也许你有另一个 Python 安装?你使用的是从 Anaconda 安装的 R 吗?
  • 我没有使用从 Anaconda 安装的 R。会不会是这个问题?
  • 您是否尝试过使用import 导入python 模块?例如library(reticulate) os <- import("os") os$listdir(".") 就像@Eiri 的回答一样,多条蟒蛇可能是问题所在。
  • 如果您安装了 conda,我强烈建议您安装包含它的软件包(例如,conda install pandas
  • @PaulH 感谢您的回复。虚拟环境看起来非常非常令人困惑。 conda 和 pip 有什么区别?我第一次下载python时使用的教程建议pip install all packages。

标签: python r reticulate


【解决方案1】:

也许你已经安装了多个版本的 Python 并且在运行 pip freeze 时出现了另一个版本。 我建议在你的项目文件夹中安装virtualenv 以避免与其他包冲突。

pip install virtualenv
virtualenv venv
source venv/bin/activate

然后在里面安装pandas。

pip install pandas

您也可以尝试使用pip3 安装pandas。

【讨论】:

  • 如何确定我是否安装了多个 python?
  • @bismo 运行 ls -l /usr/bin/python*
  • 我运行了它,但我不知道这意味着什么。它返回多行,其中 3 行以 /Python.framework/Versions/2.7/bin/python2.7/Python.framework/Versions/2.7/bin/python2.7-configPython.framework/Versions/2.7/bin/pythonw2.7 结尾。这是否意味着我(至少)有 3 条不同的蟒蛇?这是怎么回事?
  • @bismo 不。其中有一堆是符号链接和配置文件。你也有其他版本吗?并运行pip -V 来检查pip 与哪个Python 版本连接。它必须与您正在运行的版本相同。
  • 那是我得到的仅有的 3 个版本。当我运行pip -V 时,它返回了python 3.7,这是我最初下载的。
【解决方案2】:

你可以看看这个来源:

希望对您有所帮助:R Interface to Python

导入 Python 模块

来源:R/python.R

导入指定的 Python 模块以便从 R 中调用。

import(module, as = NULL, convert = TRUE, delay_load = FALSE) 
import_main(convert = TRUE)
import_builtins(convert = TRUE)
import_from_path(module, path = ".", convert = TRUE)

参数

模块

模块名称

作为

模块名称的别名(影响 R 类的名称)。请注意,这是一个高级参数,通常只应在包开发中使用(因为它会影响导入类的 S3 名称,因此会干扰 S3 方法调度)。

转换

TRUE 可自动将 Python 对象转换为其 R 等效对象。如果您通过了 FALSE,您可以使用 py_to_r() 函数进行手动转换。

延迟加载

TRUE 延迟加载模块,直到它首次使用。 FALSE 立即加载模块。如果提供了一个函数,那么它将在模块加载后被调用。如果提供了包含 on_load() 和 on_error(e) 元素的列表,则 on_load() 将在成功加载时调用,如果发生错误则调用 on_error(e)。

路径

导入路径

价值

一个 Python 模块

详情

import_from_path 函数从任意文件系统路径导入 Python 模块(指定 Python 脚本的目录会自动添加到 sys.path)。

例子

if (FALSE) 
{ 
    main <- import_main() 
    sys <- import("sys") 
 }

【讨论】:

  • 仅链接的答案不适用于本网站。请总结那里找到的相关信息。
【解决方案3】:

您似乎在使用基于“框架”输出的 Mac。 Python 2.7 是 Mac 上的基础版本。最好的办法是安装 Anaconda3,它将创建一个单独的新基础环境。

对于 reticulate,您需要 PyQt5 来使用 R Markdown 渲染 Python。因此,请执行以下步骤进行设置:

  1. 下载并安装 Anaconda
  2. conda create --name cloned_env --clone original_env 所以看起来像这样 conda create --name reticulate --clone base
  3. conda activate reticulate激活环境
  4. pip install PyQT5进入网状环境

现在检查你的 Python:

which python3

这将为您提供一个路径中包含Anaconda3 的路径。在标准(Documents)目录中创建一个名为.Renviron.txt的文本文件

添加以下代码:

RETICULATE_PYTHON="your path from which python3"

例如,我的是下面的,你的应该是 anaconda 的:

RETICULATE_PYTHON="/anaconda3/bin/python" 

也可以

RETICULATE_PYTHON="/anaconda3/envs/reticulate"

然后,当您启动 RStudio 时,您应该拥有所需的一切。

有据可查的是,这个命令不起作用:

use_condaenv(“base”)

在 R 中,检查命令 Sys.getenv() 它应该确认您的 RETICULATE_PYTHON 变量已设置为您在 .Renviron 文件中指定的路径。

在这个链接上有更多关于这个的讨论:

Unable to change Python path in reticulate

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2022-01-13
    • 2020-05-08
    • 2019-08-11
    • 2019-09-11
    相关资源
    最近更新 更多