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

如何在ReadTheDocs构建环境中安装GitHub资产中的Debian二进制包?

解决ReadTheDocs安装自定义Debian依赖包的权限问题

方案1:跳过root权限,直接解压Debian包到用户目录

Debian包本质是归档文件,不用非要通过dpkg或apt安装。你可以直接把包解压到用户有权限读写的$HOME/.local目录:

  • 下载完Debian包后,执行命令:dpkg-deb -x your-c-library.deb $HOME/.local
  • 然后在脚本里添加环境变量,让系统能找到库文件:
    export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH
    export C_INCLUDE_PATH=$HOME/.local/include:$C_INCLUDE_PATH
    
    这样后续Python库编译或运行时,就能自动读取这些路径下的C库和头文件。

方案2:尝试配置免密sudo执行dpkg

部分ReadTheDocs的构建环境允许特定sudo命令免密运行,你可以修改.readthedocs.yaml,在构建步骤里直接调用sudo安装:

build:
  os: ubuntu-22.04
  tools:
    python: "3.10"
  jobs:
    post_checkout:
      # 下载你的Debian包的命令
      - curl -LO https://your-git-project-url/your-package.deb
      # 免密执行dpkg安装
      - sudo -S dpkg -i your-package.deb < /dev/null

注意:这个方法依赖ReadTheDocs的环境配置,不是所有环境都支持,先测试看看。

方案3:把C库打包进Python包的wheel里

如果你的Python库是用setuptools或poetry构建的,直接把预编译好的C库二进制文件打包进wheel,这样部署到ReadTheDocs时就不用再装系统包:

  • 在Python包目录下建个lib文件夹,放入编译好的C库文件(比如.so文件)
  • 在setup.py或pyproject.toml里配置package_data,把lib目录下的文件包含进去
  • 运行时要么设置LD_LIBRARY_PATH指向包内的lib目录,要么在Python代码里用ctypes.CDLL直接指定库的绝对路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:33:22