使用Nix从GitHub构建xTuring Python包遇404源码下载失败问题
Nix Flake构建Python环境时xTuring 0.16源码下载404问题排查
问题背景
指定stochasticai/xTuring仓库的0.16版本,使用Nix Flake构建Python开发环境时,出现源码下载失败的错误,请求返回404状态码。相关Flake配置及错误日志如下:
Flake配置代码
{ description = "virtual environment with python and streamlit"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; python=pkgs.python311; xTuring = pkgs.python3Packages.buildPythonPackage rec { name = "xTuring"; version = "0.16"; src = pkgs.fetchFromGitHub { owner = "stochasticai"; repo = "${name}"; rev = "${version}"; #sha256 = "1ibrwal80z27c2mh9hx85idmzilx6cpcmgc15z3lyz57bz0krigb"; }; }; f = ps: with ps;[ ipython matplotlib pandas ]; pip_python_packages= python.withPackages(f); myDevTools = [ pip_python_packages pkgs.streamlit xTuring ]; in rec { devShells.default = pkgs.mkShell { buildInputs = myDevTools; }; }); }
错误日志
warning: found empty hash, assuming 'sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=' error: builder for '/nix/store/lnpnyfdq132wl3g82h66v8qldg2mnbw0-source.drv' failed with exit code 1; last 8 log lines: > > trying https://github.com/stochasticai/xTuring/archive/0.16.tar.gz > % Total % Received % Xferd Average Speed Time Time Time Current > Dload Upload Total Spent Left Speed > 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 > 0 14 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 > curl: (22) The requested URL returned error: 404 > error: cannot download source from any mirror For full logs, run 'nix log /nix/store/lnpnyfdq132wl3g82h66v8qldg2mnbw0-source.drv'. error: 1 dependencies of derivation '/nix/store/p90maxb3jvyry1m57zypil2ybq1ssbvx-python3.10-xTuring.drv' failed to build error: 1 dependencies of derivation '/nix/store/3ad8nfn68zljv1rnrzh2665s7yz7fg0p-nix-shell-env.drv' failed to build
问题原因
xTuring仓库的版本标签带有v前缀(比如0.16版本对应的标签是v0.16),但配置中直接使用0.16作为rev参数,GitHub找不到无v前缀的标签归档,因此返回404错误。
解决方案
1. 修正版本标签前缀
将fetchFromGitHub中的rev改为带v前缀的版本号:
rev = "v${version}";
2. 补充正确的SHA256哈希
取消注释sha256行,执行以下命令获取正确的哈希值:
nix-prefetch-github stochasticai xTuring v0.16
将返回的哈希值替换配置中的占位值。
修改后的完整配置示例
{ description = "virtual environment with python and streamlit"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; python=pkgs.python311; xTuring = pkgs.python3Packages.buildPythonPackage rec { name = "xTuring"; version = "0.16"; src = pkgs.fetchFromGitHub { owner = "stochasticai"; repo = "${name}"; rev = "v${version}"; sha256 = "0xq3i8z0s9y1w2x3e4r5t6y7u8i9o0p1a2s3d4f5g6h7j8k9l0"; # 替换为实际获取的哈希 }; }; f = ps: with ps;[ ipython matplotlib pandas ]; pip_python_packages= python.withPackages(f); myDevTools = [ pip_python_packages pkgs.streamlit xTuring ]; in rec { devShells.default = pkgs.mkShell { buildInputs = myDevTools; }; }); }
内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud
相关产品推荐
相关产品推荐

