我正在try 从CONDA环境中的特定R路径导入R包,但一直收到以下错误:

Error: package or namespace load failed for ‘marginaleffects’ in library.dynam(lib, package, package.lib):
shared object ‘data_table.so’ not found

我不仅在努力理解如何修复这个错误,而且还在努力理解这个错误意味着什么,或者它来自哪里.

具体地说,我正在使用基于Pythonstreamlit框架部署一个Web应用程序,并使用包rpy2从现有的R代码库连接到Python.我使用conda/manba作为我机器上的包管理器.我已经尽可能使用它们的Conda-Forge发行版安装了所有的R包.有几个R包不可用,因此我使用:install.packages("marginaleffects", dep = TRUE, lib = "/Users/myuser/mambaforge/envs/myenv/lib/R/library", verbose = TRUE)将它们安装在我所需的库路径的R中.然后,该包看起来存在于目录.../myenv/lib/R/libraryinstalled.packages()中以及RStudio的包列表中.

然而,当我try 加载带有library(marginaleffects, lib.loc="/Users/myuser/mambaforge/envs/myenv/lib/R/library")的包时,我收到了上面提到的错误.请注意,如果我在Streamlight应用程序中运行的R代码中导入此包,则会引发与.dylib共享对象有关的略微不同的错误,而不是与‘.so’共享对象相关的错误.

RRuntimeError: Error: package or namespace load failed for ‘marginaleffects’ in library.dynam(lib, package, package.lib): shared object ‘marginaleffects.dylib’ not found

我有一种最模糊的感觉,这与一个编译器错误有关.我也没有成功地通过rpy2框架安装包,收到了一条冗长且相当费解的错误消息.

EDIT

到目前为止,我在MacOS(Ventura,在Big Sur上发生了相同的问题)上运行的代码可重现性:

zsh> mamba create -n myenv r-essentials r-base python=3.8
zsh> mamba activate myenv
zsh> mamba install -c r rpy2 
zsh> mamba install -c conda-forge pandas
zsh> mamba install -c conda-forge streamlit

R> install.packages("clarify", dep = TRUE, lib = "/Users/myname/mambaforge/envs/myenv/lib/R/library", verbose = TRUE)
R> install.packages("marginaleffects", dep = TRUE, lib = "/Users/myname/mambaforge/envs/myenv/lib/R/library", verbose = TRUE)
R> library(marginaleffects, lib.loc="/Users/myuser/mambaforge/envs/myenv/lib/R/library")
Error: package or namespace load failed for ‘marginaleffects’ in library.dynam(lib, package, package.lib):
shared object ‘data_table.so’ not found

EDIT2

我正在运行OSX-64.

推荐答案

我可以在osx-arm64平台上重现这个问题(请注意,osx-64平台上一切正常):

so-rpy2-clarify.yaml

name: so-rpy2-clarify
channels:
  - conda-forge  # only Conda Forge
  - nodefaults   # ignore user config
dependencies:
  ## Python
  - python=3.8
  - rpy2
  - pandas
  - streamlit

  ## R
  - r-base=4.3  # always define R version
  - r-clarify
  - r-essentials
  - r-marginaleffects

它与以下组件一起运行:

mamba env create -f so-rpy2-clarify.yaml

提供:

Could not solve for environment specs
The following package could not be installed
└─ r-clarify is not installable because it requires
   └─ r-mvnfast, which does not exist (perhaps a missing channel).

这个包还不是为osx-arm64构建的,而是we can put in a request(见the documentation on "Apple Silicon Builds").

我们还要判断以确保不需要其他任何内容,因为冲突报告通常只报告第一个问题.我们使用mamba repoquery来执行此操作:

mamba repoquery depends -c conda-forge -p osx-arm64 r-clarify

Executing the query r-clarify

conda-forge/osx-arm64                                       Using cache
conda-forge/noarch                                          Using cache


 Name                        Version Build             Channel    
───────────────────────────────────────────────────────────────────
 r-clarify                   0.1.3   r42hc72bb7e_0     conda-forge
 r-rlang                     0.4.11  r40h6f62c66_0     conda-forge
 r-ggplot2                   3.1.0   r351h6115d3f_1000 conda-forge
 r-pbapply                   1.3_4   r351h6115d3f_1000 conda-forge
 r-mvnfast >>> NOT FOUND <<<                                      
 r-base                      4.2.3   heabe65b_0        conda-forge
 r-chk                       0.9.0   r43hc72bb7e_1     conda-forge
 r-insight                   0.19.3  r43hc72bb7e_0     conda-forge
 r-marginaleffects           0.9.0   r42hc72bb7e_0     conda-forge

看起来r-mvnfast是唯一缺失的依赖项.

Python相关问答推荐

如何用symy更新分段函数

在Python和matlab中显示不同 colored颜色 的图像

Python中使用时区感知日期时间对象进行时间算术的Incredit

如何自动抓取以下CSV

需要计算60,000个坐标之间的距离

如何根据参数推断对象的返回类型?

使用索引列表列表对列进行切片并获取行方向的向量长度

如何在给定的条件下使numpy数组的计算速度最快?

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

如果条件不满足,我如何获得掩码的第一个索引并获得None?

调用decorator返回原始函数的输出

用砂箱开发Web统计分析

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

基于形状而非距离的两个numpy数组相似性

Python全局变量递归得到不同的结果

python panda ExcelWriter切换动态公式到数组公式

从旋转的DF查询非NaN值

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

如果不使用. to_list()[0],我如何从一个pandas DataFrame中获取一个值?