MacOS系统下spacyr执行spacy_initialize()提示Python共享库未找到错误
我已查阅Stack Overflow上的同类问答但仍未解决该问题,可能我按照已有答案操作时出现失误,因此需要进一步指导,下方附上sessionInfo()输出。
问题描述
我在MacOS系统的RStudio中已加载spacyr包,同时本机也安装了miniconda,但运行以下代码时:
spacy_initialize()
收到报错:
Error: Python shared library not found, Python bindings not loaded.
Use reticulate::install_miniconda() if you'd like to install a Miniconda Python environment.
该报错与我已安装miniconda的实际情况矛盾,我猜测可能是下载miniconda时未配置为“共享环境”,也有可能是我的2017款Macbook预装的旧版本Python与miniconda安装的Python 3.9版本冲突导致异常。
我目前可以接受卸载重装相关组件、操作终端等解决方案,麻烦尽量用通俗易懂的方式说明操作步骤。
sessionInfo()
R version 4.1.1 (2021-08-10) Platform: x86_64-apple-darwin17.0 (64-bit) Running under: macOS Big Sur 11.6
Matrix products: default LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages: [1] stats graphics grDevices utils datasets methods base
other attached packages: [1] reticulate_1.22 spacyr_1.2.1 textrecipes_0.4.1 recipes_0.1.17 [5] cleanNLP_3.0.3 hunspell_3.0.1 SnowballC_0.7.0 gt_0.3.1 [9] magrittr_2.0.1 rmarkdown_2.11 htmltools_0.5.2 rlang_0.4.12 [13] stopwords_2.2 quanteda_3.1.0 text2vec_0.6 corpus_0.10.2 [17] bench_1.1.1 jiebaR_0.11 jiebaRD_0.1 janeaustenr_0.1.5 [21] hcandersenr_0.2.0 tidytext_0.3.2 forcats_0.5.1 stringr_1.4.0 [25] dplyr_1.0.7 purrr_0.3.4 readr_2.0.2 tidyr_1.1.4 [29] tibble_3.1.5 ggplot2_3.3.5 tidyverse_1.3.1 tokenizers_0.2.1
loaded via a namespace (and not attached): [1] colorspace_2.0-2 ellipsis_0.3.2 class_7.3-19 [4] rprojroot_2.0.2 fs_1.5.0 rstudioapi_0.13 [7] listenv_0.8.0 remotes_2.4.1 prodlim_2019.11.13 [10] fansi_0.5.0 lubridate_1.8.0 xml2_1.3.2 [13] codetools_0.2-18 splines_4.1.1 cachem_1.0.6 [16] rsparse_0.4.0 knitr_1.36 pkgload_1.2.3 [19] mlapi_0.1.0 jsonlite_1.7.2 RhpcBLASctl_0.21-247 [22] broom_0.7.9 dbplyr_2.1.1 png_0.1-7 [25] compiler_4.1.1 httr_1.4.2 backports_1.2.1 [28] assertthat_0.2.1 Matrix_1.3-4 fastmap_1.1.0 [31] cli_3.0.1 prettyunits_1.1.1 tools_4.1.1 [34] gtable_0.3.0 glue_1.4.2 float_0.2-6 [37] fastmatch_1.1-3 Rcpp_1.0.7 cellranger_1.1.0 [40] vctrs_0.3.8 timeDate_3043.102 xfun_0.27 [43] gower_0.2.2 globals_0.14.0 ps_1.6.0 [46] testthat_3.1.0 rvest_1.0.2 lifecycle_1.0.1 [49] devtools_2.4.2 future_1.22.1 MASS_7.3-54 [52] scales_1.1.1 ipred_0.9-12 lgr_0.4.3 [55] hms_1.1.1 parallel_4.1.1 yaml_2.2.1 [58] memoise_2.0.0 rpart_4.1-15 stringi_1.7.5 [61] desc_1.4.0 pkgbuild_1.2.0 lava_1.6.10 [64] pkgconfig_2.0.3 evaluate_0.14 lattice_0.20-45 [67] processx_3.5.2 tidyselect_1.1.1 parallelly_1.28.1 [70] R6_2.5.1 generics_0.1.0 DBI_1.1.1 [73] pillar_1.6.4 haven_2.4.3 withr_2.4.2 [76] nnet_7.3-16 survival_3.2-13 future.apply_1.8.1 [79] modelr_0.1.8 crayon_1.4.1 utf8_1.2.2 [82] tzdb_0.1.2 usethis_2.1.0 grid_4.1.1 [85] readxl_1.3.1 data.table_1.14.2 callr_3.7.0 [88] reprex_2.0.1 digest_0.6.28 RcppParallel_5.1.4 [91] munsell_0.5.0 sessioninfo_1.1.1
解决方案
按以下步骤操作即可解决该问题,无需改动系统自带Python,不会影响其他软件运行:
步骤1:清理现有miniconda(避免版本冲突)
- 打开Mac自带的「终端」App
- 输入命令
rm -rf ~/miniconda3回车,删除现有miniconda安装目录 - 输入命令
open ~/.zshrc回车,打开shell配置文件,删除所有包含conda字样的配置行,保存后关闭文件 - 回到终端输入命令
source ~/.zshrc回车,让配置生效,旧miniconda就清理完成了
步骤2:安装R适配版miniconda
- 打开RStudio,重启R会话(点击菜单栏「会话」-「重启R」)
- 在控制台运行命令
reticulate::install_miniconda(),等待安装完成,这个版本默认带Python共享库,专门适配R的调用需求,不会和系统Python冲突 - 安装完成后再次重启R会话,运行以下代码验证配置:
library(reticulate) py_config()
如果输出的Python路径包含r-miniconda3字样,说明配置正常。
步骤3:配置spacyr运行环境
- 继续在RStudio控制台运行命令
spacyr::spacy_install(),等待自动安装spacy依赖和默认模型 - 安装完成后运行
spacy_initialize(),即可正常初始化,不会再报共享库缺失错误。
可选优化
如果不想每次打开RStudio都手动指定conda环境,可以把use_condaenv("~/Library/r-miniconda3", required = TRUE)写入根目录的.Rprofile文件,每次启动R会自动加载配置。
内容的提问来源于stack exchange,提问作者cjl5000

