Python 如果是';它不在尼克斯帕克斯?
我有一个用于Python开发的shell.nix,如下所示: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> {}
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创建的环境是不可见的。可能是使用包。