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

为Nix fetchpypi配置私有PyPI仓库URL的最佳方式

使用Nix fetchpypi访问私有PyPI仓库及自定义配置方案

访问私有PyPI仓库的最佳方式

直接在fetchpypi调用中指定url字段,跳过默认的地址生成逻辑,直接给出私有仓库的包下载链接。如果私有仓库需要身份认证,可通过extraHeaders添加认证头(比如Bearer Token或Basic Auth)。示例代码:

src = fetchPypi {
  pname = "your-private-package";
  version = "1.0.0";
  url = "https://your-private-pypi.com/packages/your-private-package-1.0.0.tar.gz";
  sha256 = "sha256-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  # 如需认证,添加请求头
  extraHeaders = {
    Authorization = "Bearer your-private-repo-token";
  };
};

这种方式针对单包配置,灵活度高,适合只拉取个别私有包的场景。

覆盖computeSourceUrl指定自定义仓库基础URL

fetchpypi允许调用时重新定义computeSourceUrl参数,替换默认的地址生成逻辑。你可以根据私有仓库的包路径规则,编写自定义的地址生成函数。示例:

src = fetchPypi rec {
  pname = "your-package";
  version = "1.0.0";
  sha256 = "sha256-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  # 自定义地址生成逻辑,适配私有仓库路径
  computeSourceUrl = pname: version: _:
    "https://your-private-pypi.com/packages/source/${builtins.substring 0 1 pname}/${pname}/${pname}-${version}.tar.gz";
};

这里的函数接收pname、version、sha256三个参数(最后一个参数如果用不到可以用下划线忽略),返回你需要的私有仓库包地址。

覆盖mirrors://镜像设置

可以覆盖。默认的computeSourceUrl使用mirrors://pypi/...格式的镜像地址,你只需要在调用fetchpypi时重新定义computeSourceUrl,完全替换默认逻辑即可。比如要切换到自定义公共镜像,示例代码:

src = fetchPypi rec {
  pname = "deserialize";
  version = "1.8.3";
  sha256 = "sha256-0aozmQ4Eb5zL4rtNHSFjEynfObUkYlid1PgMDVmRkwY=";
  # 替换为自定义镜像的地址生成逻辑
  computeSourceUrl = pname: version: _:
    "https://your-public-mirror.com/pypi/packages/source/${builtins.substring 0 1 pname}/${pname}/${pname}-${version}.tar.gz";
};

这种方式会完全绕过默认的PyPI镜像列表,使用你指定的源地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:45:19