You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下如何修改R的httr包所使用的curl版本?

如何在Windows上指定R的curl包使用的curl版本

核心原因

R的curl包默认是静态编译绑定了特定版本的curl库,并非调用系统PATH里的curl可执行文件——这就是为什么调整系统PATH对curl::curl_version()$version结果无影响的原因。Sys.which('curl')和system('curl -V')查看的是系统可执行文件版本,而curl::curl_version()显示的是R包内置绑定的库版本。

解决方案

方案1:从源码编译curl包,指定外部curl库

这是最可靠的自定义版本方法,让R的curl包链接你指定的curl库(比如Rtools、Git或Anaconda自带的):

  1. 确认目标curl库的路径,例如:
    • Git自带curl:C:\Program Files\Git\mingw64\lib(库文件)和C:\Program Files\Git\mingw64\include(头文件)
    • Rtools自带curl:C:\rtools40\mingw64\lib和C:\rtools40\mingw64\include
  2. 设置环境变量,告知R编译时链接指定curl:
    Sys.setenv(PKG_CONFIG_PATH = "C:/Program Files/Git/mingw64/lib/pkgconfig") # 替换为你的curl库的pkgconfig路径
    Sys.setenv(BUILD_LIBCURL = "yes")
    
  3. 卸载现有curl包,从源码重新安装:
    remove.packages("curl")
    install.packages("curl", type = "source")
    
  4. 验证版本:
    curl::curl_version()$version
    

方案2:安装最新版curl包

如果不想手动编译,可以尝试安装GitHub上的最新版curl包,通常会绑定更新的curl库:

install.packages("devtools")
devtools::install_github("jeroen/curl")

方案3:替换curl包内置的dll文件(风险较高)

找到R的curl包安装目录下的libcurl.dll(示例路径:C:\Users\[你的用户名]\Documents\R\win-library\[R版本]\curl\libs\x64\libcurl.dll),将你想要的同架构(x64/x86)新版本libcurl.dll替换进去。注意需确保依赖的ssl等配套dll也存在,否则会报错。

方案4:切换到支持系统curl的HTTP包

如果不想折腾curl包,可改用httr2(httr的替代方案),它支持指定系统curl路径:

install.packages("httr2")
library(httr2)
# 指定系统curl可执行文件路径
req <- request("https://example.com") %>%
  req_options(curl = "C:/Program Files/Git/mingw64/bin/curl.exe")
resp <- req_perform(req)

验证方法

每次修改后,执行以下命令确认版本:

# 查看R包绑定的curl版本
curl::curl_version()$version
# 查看实际请求的curl信息
httr::GET("https://httpbin.org/user-agent")

内容的提问来源于stack exchange,提问作者sbha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:31:05