使用R reticulate导入sentence_transformers时遇encode参数类型错误
问题:Rgui中通过reticulate导入sentence_transformers失败
环境信息
- 系统:Windows 11
- Python版本:3.12.3(直接运行
from sentence_transformers import *; model = SentenceTransformer("all-MiniLM-L6-v2")正常) - R版本:4.4.2
- ctype设置:
French_Canada.utf8 - reticulate版本:1.42.0触发错误,降级至1.41.0后出现Python缓冲区刷新警告
- 仅Rgui环境出错,RStudio和Rterm运行正常
复现代码
library(reticulate) sentence_transformers <- import("sentence_transformers")
错误信息
Error in py_module_import(module, convert = convert) : RuntimeError: Failed to import transformers.modeling_utils because of the following error (look up to see its traceback): encode() argument 'encoding' must be str, not int Run `reticulate::py_last_error()` for details.
添加py_require("sentence-transformers")后错误仍存在。
解决建议
调整Rgui的编码设置:错误提示涉及编码参数类型问题,推测与Rgui的ctype设置相关。可尝试:
- 临时修改R的locale设置:
Sys.setlocale(category = "LC_ALL", locale = "English_United States.utf8") library(reticulate) sentence_transformers <- import("sentence_transformers") - 永久修改Rgui启动参数:右键Rgui快捷方式,在目标栏末尾添加
--encoding=utf-8,重启Rgui后重试。
- 临时修改R的locale设置:
明确指定Python环境:强制reticulate使用正常运行的Python路径,替换为你的实际Python安装路径:
library(reticulate) use_python("C:/Users/YourName/AppData/Local/Programs/Python/Python312/python.exe", required = TRUE) sentence_transformers <- import("sentence_transformers")清理reticulate缓存:
reticulate::py_clean_cache()执行后完全关闭Rgui,重新打开再尝试导入。
手动设置PYTHONPATH:指定sentence_transformers所在的site-packages路径:
Sys.setenv(PYTHONPATH = "C:/Users/YourName/AppData/Local/Programs/Python/Python312/Lib/site-packages") library(reticulate) sentence_transformers <- import("sentence_transformers")
内容的提问来源于stack exchange,提问作者Denis Cousineau
相关产品推荐
相关产品推荐

