如何在ReadTheDocs构建环境中安装GitHub资产中的Debian二进制包?
解决ReadTheDocs安装自定义Debian依赖包的权限问题
方案1:跳过root权限,直接解压Debian包到用户目录
Debian包本质是归档文件,不用非要通过dpkg或apt安装。你可以直接把包解压到用户有权限读写的$HOME/.local目录:
- 下载完Debian包后,执行命令:
dpkg-deb -x your-c-library.deb $HOME/.local - 然后在脚本里添加环境变量,让系统能找到库文件:
这样后续Python库编译或运行时,就能自动读取这些路径下的C库和头文件。export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH export C_INCLUDE_PATH=$HOME/.local/include:$C_INCLUDE_PATH
方案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
相关产品推荐
相关产品推荐

