Python 如果是';它不在尼克斯帕克斯?

Python 如果是';它不在尼克斯帕克斯?,python,nix,Python,Nix,我有一个用于Python开发的shell.nix,如下所示: with import <nixpkgs> {}; (( python37.withPackages (ps: with ps; [ matplotlib spacy pandas spacy_models.en_core_web_lg plotly ])).override({ignoreCollisions=true; })).env with import <nixpkgs> {}

我有一个用于Python开发的shell.nix,如下所示:

with import <nixpkgs> {};

((
python37.withPackages (ps: with ps; [
  matplotlib
  spacy
  pandas
  spacy_models.en_core_web_lg
  plotly
])).override({ignoreCollisions=true; })).env
with import <nixpkgs> {};

let colormath = import ./requirements.nix { inherit pkgs; }
in ((
python37.withPackages (ps: with ps; [
  matplotlib
  spacy
  ...
  colormath
])).override({ignoreCollisions=true; })).env
编辑:

我还尝试创建一个python包nix表达式,如在Nixpkgs中,它似乎构建得很好:

{ buildPythonPackage
, fetchPypi
, networkx
, numpy
, lib
, pytest
}:

buildPythonPackage rec {
  pname = "colormath";
  version = "3.0.0";

  src = fetchPypi {
    inherit version;
    inherit pname;
    sha256 = "3d4605af344527da0e4f9f504fad7ddbebda35322c566a6c72e28edb1ff31217";
  };

  checkInputs = [ pytest ];

  checkPhase = ''
    pytest
  '';

  # Tests seem to hang
  # doCheck = false;

  propagatedBuildInputs = [ networkx numpy ];

  meta = {
    homepage = "https://github.com/gtaylor/python-colormath";
    license = lib.licenses.bsd2;
    description = "Color math and conversion library.";
  };
}
(我甚至提出了拉取请求。)但我只是不知道如何将其导入到我的开发环境中


我还没走。有没有一种简单的方法可以组合nixpkgs和非nixpkgs python模块

我确实解决了类似的问题:

with import <nixpkgs> {};

( let
    colormath = pkgs.python37Packages.buildPythonPackage rec {
      pname = "colormath";
      version = "3.0.0";

      src = pkgs.python37Packages.fetchPypi{
        inherit version;
        inherit pname;
        sha256 = "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix";
      };

      buildInputs = [ pkgs.python37Packages.numpy pkgs.python37Packages.networkx ];
    };

  in pkgs.python37.buildEnv.override rec {
    extraLibs = [
      pkgs.python37
      pkgs.python37Packages.matplotlib
      pkgs.python37Packages.spacy
      pkgs.python37Packages.pandas
      pkgs.python37Packages.spacy_models.en_core_web_lg
      pkgs.python37Packages.plotly
      colormath
    ];
  }
).env
与导入{};
(让
colormath=pkgs.python37Packages.buildPythonPackage rec{
pname=“colormath”;
version=“3.0.0”;
src=pkgs.python37Packages.fetchPypi{
继承版本;
继承pname;
sha256=“05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaix”;
};
buildInputs=[pkgs.python37Packages.numpy pkgs.python37Packages.networkx];
};
在pkgs.python37.buildEnv.override rec中{
extraLibs=[
pkgs.python37包
pkgs.python37Packages.matplotlib
pkgs.python37Packages.spacy
pkgs.python37Packages.pandas
pkgs.python37Packages.spacy_models.en_core_web_lg
pkgs.python37Packages.plotly
色彩数学
];
}
)环境署署长

可能还有改进的余地,但这对我来说很有效。

您遇到了哪些错误?或者你提到的方法是什么?你认为“不容易”吗?我在/colormath.nix:1:1调用了匿名函数,没有必要的参数“buildPythonPackage”,在/nix/store/3ncjqs079xp7isfxsq2rfbsxhrk0ax3n-nixpkgs-20.03pre203529.e8f2764fe8d/nixpkgs/lib/customization.nix:69:16(使用“--show trace”来显示详细的位置信息)我希望它是这样的:
python37.withPackages…spacy pandas pypi.colormath
。你能显示requirement.nix的输出吗?我想你只是缺少了一个参数。根据。可能(colormath.colormath).我添加了requirements.nix的要点,但我认为问题在于,pypi2nix正在使用pypi包创建一个新的python环境,而这对于我使用
python37创建的环境是不可见的。可能是使用包。