【问题标题】:Nix openai python dev-environment build failureNix openai python开发环境构建失败
【发布时间】:2021-02-17 00:19:58
【问题描述】:

我正在尝试使用 nix 制作一个包含 openai pypi 包的 python37 开发环境。

这个question was originally on reddit,但我找不到答案,而且话题中的活跃度很低。

使用我得到的提示和语言框架文档,我设法提出了以下表达式:

default.nix:

with import<nixpkgs>{};
( let
    openai = pkgs.callPackage ./release.nix {
              inherit pkgs; 
              buildPythonPackage = pkgs.python37Packages.buildPythonPackage;
            };
  in pkgs.python37.buildEnv.override rec {
    extraLibs = [ pkgs.python37Packages.requests openai ];
  }
).env

release.nix

{ pkgs, buildPythonPackage }:

buildPythonPackage rec{
  pname="openai";
  version="0.2.6";

  src=fetchTarball{
    url="https://files.pythonhosted.org/packages/59/2d/b3bc2aa663b2c376f073fd141e128ecfb47f3aff95ccee284a74d85a1ef8/openai-0.2.6.tar.gz";
    sha256="0cplrzfw3i6yxcd35ijfjkx9jbcvkvzn5jn5b8s657a8myhm6kav";
  };

  propagateBuildInputs = [ pkgs.python37Packages.requests ];
  doCheck=false;

  meta = { # only for testing the env right now
    homepage="...";
    description="...";
    license = "...";
    maintainers= [];
  };
}

但是,这给我留下了(我猜它的 pip-)错误

Processing ./openai-0.2.6-py3-none-any.whl
ERROR: Could not find a version that satisfies the requirement requests>=2.20; python_version >= "3.0" (from openai==0.2.6) (from versions: none)
ERROR: No matching distribution found for requests>=2.20; python_version >= "3.0" (from openai==0.2.6)
builder for '/nix/store/ncnga4fcxl15xyvv3f325f9g0q45mqvr-python3.7-openai-0.2.6.drv' failed with exit code 1

这让我很吃惊,因为propagateBuildInputs = [ pkgs.python37Packages.requests ]; 明确指出包requests(nixpkgs 中的版本 2.22.0)应该在构建时存在。

我对阻止其工作的 buildPythonPackage 函数有什么误解?

【问题讨论】:

  • 你的构建命令包含 pip3 , python3 ?
  • 我尝试了多个版本;但是构建命令应该由 buildPythonPackage 自动设置(到我传递的版本);如果我正确理解该功能...
  • 这只是propagateBuildInputs != propagatedBuildInputs吗?
  • 你能尝试用所有python3和pip3创建你自己的构建脚本吗(只需替换它是python -> pythn3和pip -> pip3的位置)?
  • 也在外部脚本中使用 sudo pip3

标签: python-3.x development-environment nix openai


【解决方案1】:

progagatedBuildInputs 更改为另一个名称,如progagateBuildInputs 会导致它被忽略,因此找不到它包含的任何依赖项(即requests)。例如:

yubico-client/default.nix

  propagateBuildInputs = [ requests ];

ERROR: Could not find a version that satisfies the requirement requests<3.0,>=2.7 (from yubico-client==1.13.0) (from versions: none)
ERROR: No matching distribution found for requests<3.0,>=2.7 (from yubico-client==1.13.0)

  propagatedBuildInputs = [ requests ];

$ nix-build -I nixpkgs=~/git/nixpkgs '<nixpkgs>' -k -A python37Packages.yubico-client
/nix/store/0yjz8smgmjr0006nmka6wliy01z8av7m-python3.7-yubico-client-1.13.0

【讨论】:

  • 谢谢;就是这样;当然就是这么简单^^;如果可能的话,我会在 23 小时内给你承诺的赏金 :)
  • @FabianSchneider 谢谢,它是如此简单,我很确定有人会指出它被定义为同义词的地方,但由于他们没有快速测试。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
相关资源
最近更新 更多