使用Reticulate包在R Markdown中运行Python代码报错咨询
问题原因
use_python()参数使用错误:该函数要求传入Python可执行程序的路径,而非Python脚本路径,你传入的Users/Documents/Sentiment Analysis/task.py是脚本文件,虽然无报错但实际未正确绑定目标Python环境。- 代码块类型不匹配:R Markdown默认代码块由R解释器执行,你直接把Python代码写在R代码块中,R会把
import pandas当成R语法解析,自然报"unexpected symbol"错误。后续你直接在R代码块里写pd.read_excel,R环境中根本不存在这个函数,也会触发报错。 py_install()包名填写错误:你安装的matplotlib.pyplot、sklearn.pipeline是Python库的子模块,不是独立包名,实际应该安装matplotlib和scikit-learn。
解决步骤
- 修正Python环境绑定
先找到本地可正常运行这段Python代码的解释器路径:Windows下在Python终端执行where python,macOS/Linux下执行which python获取路径,之后替换为正确路径绑定:
# 替换为你自己的Python解释器实际路径,比如mac下常见的/Users/xxx/opt/anaconda3/bin/python use_python("/your/actual/python/interpreter/path", required = TRUE) # 执行下方代码验证绑定是否正确,输出路径和目标路径一致即为成功 py_config()
- 修正R Markdown代码块声明
运行Python代码时,必须把代码块的类型声明为python,不能使用默认的R代码块:
import pandas as pd import seaborn as sns import numpy as np import matplotlib.pyplot as plt from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.ensemble import RandomForestClassifier from sklearn.pipeline import make_pipeline from sklearn.metrics import accuracy_score,confusion_matrix,ConfusionMatrixDisplay,classification_report # 读取Excel文件 dataset = pd.read_excel('/Users/Documents/df.xlsx')
如果需要在R代码块中调用Python对象,需要加py$前缀,示例如下:
# 在R代码块中读取Python环境里的dataset对象 r_dataset <- py$dataset
- 修正依赖安装命令
如果之前的依赖安装未生效,重新执行正确的安装命令:
py_install(c("pandas", "seaborn", "numpy", "matplotlib", "scikit-learn", "openpyxl")) # 安装openpyxl是为了支持pandas读取xlsx格式文件
内容的提问来源于stack exchange,提问作者nesta13
相关产品推荐
相关产品推荐

