簡體   English   中英

如何在 R 中使用 Reticulate 導入 python 包

[英]How to import python packages using Reticulate in R

我已經學習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,並且如果在您運行pip freeze時顯示它,您正在運行另一個版本。 我建議在您的項目文件夾中安裝virtualenv以避免與其他包沖突。

pip install virtualenv
virtualenv venv
source venv/bin/activate

然后在里面安裝pandas。

pip install pandas

您也可以嘗試使用pip3安裝 pandas。

你可以看看這個來源:

希望它有所幫助: R 接口到 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 腳本的目錄自動添加到 sys.path)中導入 Python 模塊。

例子

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

好像您正在使用基於“框架”輸出的 Mac。 Python 2.7 是 Mac 上的基礎版本。 最好的辦法是安裝 Anaconda3,它將創建一個單獨的新基礎環境。

對於網狀結構,您需要 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的路徑。 在標准(文檔)目錄中創建一個名為.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 文件中指定的路徑。

在這個鏈接上有更多關於這個的討論:

無法在網狀結構中更改 Python 路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM