Windows环境下R安装Rpostal时缺失libpostal C库的解决求助
Windows环境下Rpostal运行报错'~/libpostal/src/libpostal' not found的解决方法
问题背景
我用R从GitHub安装了Rpostal库,执行代码:
# 从GitHub安装 devtools::install_github("datactuariat/Rpostal") library(Rpostal)
运行演示命令时:
# 地址扩展 postal_expand("Quatre vignt douze Ave des Champs-Élysées")
出现错误:
Loading required package: jsonlite Error in system(req, intern = TRUE) : '~/libpostal/src/libpostal' not found
推测是缺少libpostal C库,但找不到Windows下的安装说明,附session信息:
> sessionInfo() R version 4.1.3 (2022-03-10) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 22000) Matrix products: default locale: [1] LC_COLLATE=English_Canada.1252 LC_CTYPE=English_Canada.1252 LC_MONETARY=English_Canada.1252 [4] LC_NUMERIC=C LC_TIME=English_Canada.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] jsonlite_1.8.0 Rpostal_0.0.0.9000 loaded via a namespace (and not attached): [1] compiler_4.1.3 prettyunits_1.1.1 remotes_2.4.2 tools_4.1.3 testthat_3.1.4 digest_0.6.29 [7] pkgbuild_1.3.1 pkgload_1.2.4 evaluate_0.15 memoise_2.0.1 lifecycle_1.0.1 rlang_1.0.2 [13] cli_3.3.0 rstudioapi_0.13 curl_4.3.2 yaml_2.3.5 xfun_0.30 fastmap_1.1.0 [19] withr_2.5.0 knitr_1.39 desc_1.4.1 fs_1.5.2 devtools_2.4.3 rprojroot_2.0.3 [25] glue_1.6.2 R6_2.5.1 processx_3.5.3 rmarkdown_2.14 sessioninfo_1.2.2 callr_3.7.0 [31] purrr_0.3.4 magrittr_2.0.2 ps_1.6.0 ellipsis_0.3.2 htmltools_0.5.2 usethis_2.1.6 [37] tinytex_0.40 cachem_1.0.6 crayon_1.5.1 brio_1.1.3
问题原因
Rpostal是libpostal的R包装器,必须先在系统中编译安装底层的libpostal C库,否则Rpostal无法找到依赖的二进制文件,触发上述错误。
解决步骤
1. 安装编译工具
- 安装对应R版本的Rtools:你的R是4.1.3,需安装Rtools40,安装时务必勾选"Add Rtools to system PATH"。
- 打开Rtools自带的MSYS2终端:在开始菜单找到"Rtools 40"文件夹,打开"MSYS2 MinGW 64-bit"终端。
2. 编译安装libpostal
在MSYS2终端依次执行以下命令:
# 更新包索引 pacman -Syu # 安装编译依赖 pacman -S base-devel gcc git make curl autoconf automake libtool pkg-config # 克隆libpostal源码 git clone https://github.com/openvenues/libpostal.git cd libpostal # 初始化配置脚本 ./bootstrap.sh # 配置安装路径(这里指定安装到C盘根目录的libpostal文件夹,可自行修改) ./configure --prefix=/c/libpostal --datadir=/c/libpostal/data # 编译并安装(此步骤耗时久,需等待语言数据包下载完成) make -j4 make install
3. 配置系统环境变量
- 打开Windows系统属性的环境变量设置:右键"此电脑" → "属性" → "高级系统设置" → "环境变量"。
- 添加系统变量:
- 变量名:
LIBPOSTAL_PATH,变量值:C:\libpostal(对应上述configure命令的--prefix路径) - 将
C:\libpostal\bin添加到Path系统变量中。
- 变量名:
4. 重新安装Rpostal
关闭并重启R/RStudio,执行代码重新安装:
devtools::install_github("datactuariat/Rpostal", force = TRUE) library(Rpostal)
5. 验证功能
再次运行演示命令:
postal_expand("Quatre vignt douze Ave des Champs-Élysées")
此时应该能正常返回地址扩展结果。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

