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

如何在dh_virtualenv中使用本地仓库构建含setup_requires的pip包

解决离线构建中setup_requires依赖的本地仓库配置方案

针对你遇到的setup_requires依赖无法被dh_virtualenv管控,且离线构建无法访问PyPI的问题,我们可以通过强制easy_install指向本地仓库来解决,具体步骤如下:

  • 提前准备本地PyPI仓库
    先在有网络的环境中,把项目依赖的jira、PyNaCl及其所有嵌套依赖包下载到本地目录(比如/opt/local-pypi):

    pip download -d /opt/local-pypi jira PyNaCl --no-binary :all:  # 下载源码包确保跨平台兼容
    

    然后用pip生成标准的PyPI simple索引结构,方便easy_install识别:

    pip index generate --directory /opt/local-pypi
    

    把这个目录拷贝到你的mini-buildd构建环境中(比如挂载到构建容器,或者同步到构建节点)。

  • 配置easy_install指向本地仓库
    有两种方式让easy_install优先使用本地仓库:

    1. 临时环境变量(适合构建脚本中使用)
      在触发构建前,设置EASY_INSTALL_OPTIONS环境变量,让easy_install加载本地仓库:
      export EASY_INSTALL_OPTIONS="-f file:///opt/local-pypi --index-url file:///opt/local-pypi/simple"
      
      可以把这行加到你的debian/rules脚本里,放在dh_virtualenv执行命令之前。
    2. 持久化配置文件
      如果需要在构建环境中全局生效,创建或修改/etc/pydistutils.cfg文件:
      [easy_install]
      find_links = file:///opt/local-pypi
      index_url = file:///opt/local-pypi/simple
      
      这样所有的easy_install调用都会默认使用本地仓库,不会去访问PyPI。
  • 适配mini-buildd构建流程
    确保mini-buildd的构建工作目录能访问到本地仓库路径:

    • 如果是用容器构建,需要把本地仓库目录挂载到容器内的对应路径(比如/opt/local-pypi);
    • 如果是物理节点构建,直接把仓库目录放到构建用户可访问的路径下即可。
      另外,因为dh_virtualenv不会处理setup_requires阶段的依赖,所以必须让setup.py执行时的easy_install能通过上述配置拿到本地包,才能顺利完成前置依赖安装。
  • 验证构建流程
    触发构建前,可以先手动测试easy_install是否能从本地仓库获取包:

    easy_install --dry-run jira
    

    如果输出显示从本地仓库查找包,说明配置生效,再正式执行构建即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:23:30