fetchPypi无法获取正确.whl文件URL以构建xTuring包
问题原因及解决方案
核心问题
fetchPypi生成错误URL的原因有两个:
- 包名大小写不匹配:PyPI上该包的正式包名是小写的
xturing,但你配置的pname = "xTuring",导致fetchPypi拼接URL时使用了大写的路径段x/xTuring,和PyPI实际存储路径不符。 - 版本号带多余前缀:你指定的
version = "v0.1.6"包含了v前缀,但PyPI上该版本的正式版本号是0.1.6,没有前缀,这也导致URL中的版本部分拼接错误。
修正后的flake配置片段
针对xTuring的定义部分,修改如下:
xTuring = pkgs.python3Packages.buildPythonPackage rec { pname = "xturing"; # 改为小写包名 version = "0.1.6"; # 去掉v前缀 format = "wheel"; src = pkgs.python3Packages.fetchPypi rec { inherit pname version format; # 重新计算对应正确包的sha256,可使用命令 nix-prefetch-pypi xturing 0.1.6 --format wheel 获取 sha256 = "sha256-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; python = "py3"; }; # 若有依赖可放开下面的配置 # propagatedBuildInputs = with python; [ setproctitle ]; };
补充说明
fetchPypi是通过给定的pname、version等参数直接拼接PyPI的下载URL,而非主动查询PyPI的元数据。因此必须确保这些参数和PyPI上的正式包信息完全一致,包括包名的大小写、版本号的格式。
你可以通过nix-prefetch-pypi xturing 0.1.6 --format wheel命令自动获取正确的sha256值,替换上面的占位符。
内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud
相关产品推荐
相关产品推荐

