用于源代码python脚本ModuleNotFoundError的R网状包:没有名为“rpytools”的模块

2024-09-27 22:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

我有一个Python脚本pythonScript.py,我想通过一个R脚本rScript.r来源代码

我使用VS Studio代码内部人员运行我的R脚本,特别是使用radian控制台;几个月前,我按照this tutorial(或其他类似教程)设置了我的环境

问题

使用reticulate包中的函数时,会引发错误:

ModuleNotFoundError: No module named 'rpytools'

为了创建一个minimal reproducible example,我将使用reticulate中的py_config函数,尽管最终我的目标是使用source_python运行我的pythonScript.py

输入:

install.packages("reticulate")
reticulate::use_python("<redacted>/anaconda3/python.exe")
reticulate::py_config()
# The rest WILL NOT run in radian from VS Code Insiders
1+1

输出:

Error in py_module_import(module, convert = convert) : 
  ModuleNotFoundError: No module named 'rpytools'

我试图定位并移动rpytools文件夹的位置,但无论我将其移动到何处,我都无法避免这个错误。我还尝试卸载并重新安装reticulate,但在使用VS代码时,我从未设法绕过此错误

两个次优解决方案:

  1. 如果在R Studio中运行相同的代码,则不会出现错误,并且执行良好。然而,我希望我的项目保持在VS代码中
  2. 在VS代码中,如果我将py_config步骤包装在try中,然后再次运行它(在同一个R会话中),脚本将顺利完成运行!这让人感觉很“黑客”,我希望避免使用这种策略来执行我的脚本

输入:

install.packages("reticulate")
reticulate::use_python("<redacted>/anaconda3/python.exe")
# The rest WILL run
try(reticulate::py_config())
reticulate::py_config()
1+1

输出:

Error in py_module_import(module, convert = convert) : 
  ModuleNotFoundError: No module named 'rpytools'      
python:         <redacted>/anaconda3/python.exe
libpython:      <redacted>/anaconda3/python38.dll
pythonhome:     <redacted>/anaconda3
version:        3.8.3 (default, Jul  2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)]
Architecture:   64bit
numpy:          <redacted>/anaconda3/Lib/site-packages/numpy
numpy_version:  1.19.1

NOTE: Python version was forced by RETICULATE_PYTHON
[1] 2

问题:

  1. 为什么只有在使用VS Code Studio Insiders/radian而不是R Studio时才会出现错误
  2. 为什么它在新的R会话中第一次调用py_config(或其他reticulate)函数时失败,但在同一R会话中的后续调用中不会失败
  3. 如何“修复”此问题,使其在VS代码中的第一次调用中运行

相关职位:


Tags: 函数代码py脚本configconvert错误vs

热门问题