如何获得网状访问虚拟环境

nat*_*rus 5 python r virtualenv reticulate

我已经为我的 python 需求设置了一个预先存在的虚拟环境,D:/SC/venv。我正在尝试将数据从 pickle 导入到 RStudio 中。我认为为了做到这一点,我需要运行一个 python 脚本来使用 reticulate 读取 RStudio 中的 pickle。但是,当我运行时:

use_virtualenv("D:/SourceControl/sportsenv")
path_to_python <- "D:/SourceControl/sportsenv"
use_python(path_to_python)
source_python("pickle_reader.py")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Error in py_run_file_impl(file, local, convert) : 
  ModuleNotFoundError: No module named 'pandas'
Run Code Online (Sandbox Code Playgroud)

Pandas安装完毕,可以直接与python一起使用。我认为这是设置虚拟环境的问题,因为当我运行 py_config() 时我得到:

> py_config()
python:         C:/Program Files/Python37/python.exe
libpython:      C:/Program Files/Python37/python37.dll
pythonhome:     C:/Program Files/Python37
version:        3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
Architecture:   64bit
numpy:          C:/Users/.../AppData/Roaming/Python/Python37/site-packages/numpy
numpy_version:  1.17.4
Run Code Online (Sandbox Code Playgroud)

所以我猜它还没有识别出我的虚拟环境。

Dan*_*tor 1

刚刚遇到了同样的问题,我想我找到了解决方法。尽管在 Windows 上,reticulate 默认为全局 Python 可执行文件,但您可以强制它指向虚拟环境中的 Python 可执行文件。以下示例在名为fooat~/.venv/foo/且安装了 pandas 的虚拟环境中启动 Python REPL。

# Force reticulate to look for virtual env. Python executable
Sys.setenv("RETICULATE_PYTHON" = "~/.venv/foo/Scripts/python.exe")

# Launch REPL per usual
reticulate::repl_python()
#> Python 3.9.7 (C:/Users/DanielMolitor/Documents/.venv/foo/Scripts/python.exe)
#> Reticulate 1.22 REPL -- A Python interpreter in R.
#> Enter 'exit' or 'quit' to exit the REPL and return to R.
>>> import pandas
>>> pandas.DataFrame({'a': [1, 2, 3], 'b': [2, 3, 4]})
>>>    a  b
>>> 0  1  2
>>> 1  2  3
>>> 2  3  4
Run Code Online (Sandbox Code Playgroud)