如何修复 Python nix flake 中的“[Errno 13] Permission denied: '_cmp.pyi'”?
How can I fix "[Errno 13] Permission denied: '_cmp.pyi'" in my Python nix flake?
我正在尝试在 NixOS 上安装 jupyter-book。我有这个薄片:
{
description = "Introduction to Computational Literary Analysis, a Textbook";
outputs = { self, nixpkgs }: let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
in {
jupyterBook = pkgs.callPackage ./jupyter-book.nix {};
myPython = (nixpkgs.legacyPackages.${system}.python3.withPackages
(ps: with ps; [
# pip
jupyter
jupyterlab
self.jupyterBook
pandas
nltk
# spacy
]));
defaultPackage.${system} = self.myPython;
};
}
导入 jupyter-book.nix,包含这个表达式:
{ python3Packages }:
let
inherit (python3Packages) buildPythonPackage fetchPypi;
attrs = buildPythonPackage rec {
pname = "attrs";
version = "20.3.0";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "007pchhxk2nh6m2rgflkkij9xjwysq3fl7xr72cy8i4pw76s6al3";
};
propagatedBuildInputs = with python3Packages; [
pytest
];
};
click = buildPythonPackage rec {
pname = "click";
version = "7.1";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "1qk0x1bh6pmn2al9kq6cbgvm7pchnzl6ahf4zzpbjljl5lpmabs8";
};
};
jupytext = buildPythonPackage rec {
pname = "jupytext";
version = "1.10.3";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "09f0ra3ndq4sxb0q3pjx713pfyc731y6fkzx93481mc7qm2cym5x";
};
propagatedBuildInputs = with python3Packages; [
toml
pyyaml
markdown-it-py
];
};
markdown-it-py = buildPythonPackage rec {
pname = "markdown-it-py";
version = "0.6.0";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "0nb6i1hqlipbcpdd7kad26sfhwjxaqnd6md7piaslyzg77gi650w";
};
propagatedBuildInputs = with python3Packages; [
attrs
];
};
sphinxExternalTOC = buildPythonPackage rec {
# https://pypi.org/project/sphinx-comments/
pname = "sphinx-external-toc";
version = "0.2.2";
src = fetchPypi {
pname = "sphinx_external_toc";
inherit version;
sha256 = "a72c5861f670f1c7a1b92f2159fc9c7c5370e079cad1e3a7be4b269fa8048e8a";
};
propagatedBuildInputs = with python3Packages; [
sphinx
attrs
click
pyyaml
];
};
sphinxComments = buildPythonPackage rec {
# https://pypi.org/project/sphinx-comments/
pname = "sphinx-comments";
version = "0.0.3";
src = fetchPypi {
inherit version; inherit pname;
sha256 = "00170afff27019fad08e421da1ae49c681831fb2759786f07c826e89ac94cf21";
};
propagatedBuildInputs = with python3Packages; [
sphinx
];
};
in buildPythonPackage rec {
pname = "jupyter-book";
version = "0.11.2";
src = fetchPypi {
inherit version; inherit pname;
sha256 = "e32298e03c19f514c745062891143693c5e001a098bae9d59d2e4434b2099c54";
};
propagatedBuildInputs = with python3Packages; [
# click
linkify-it-py
sphinx
sphinxComments
sphinxExternalTOC
jupytext
];
}
但是,当我尝试使用 nix build
构建它,或使用 nix shell
获得 shell,或使用 nix develop
时,我收到此错误:
❯ nix build
warning: Git tree '/home/jon/Code/book-computational-literary-analysis' is dirty
error: builder for '/nix/store/pp9074i7bmmvfmff4lkdmnj2wkj8vdaj-python3.8-attrs-20.3.0.drv' failed with exit code 1;
last 10 log lines:
> Executing pipInstallPhase
> /build/attrs-20.3.0/dist /build/attrs-20.3.0
> Processing ./attrs-20.3.0-py2.py3-none-any.whl
> Installing collected packages: attrs
> Attempting uninstall: attrs
> Found existing installation: attrs 21.2.0
> Uninstalling attrs-21.2.0:
> ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '_cmp.pyi'
> Consider using the `--user` option or check the permissions.
>
For full logs, run 'nix log /nix/store/pp9074i7bmmvfmff4lkdmnj2wkj8vdaj-python3.8-attrs-20.3.0.drv'.
error: 1 dependencies of derivation '/nix/store/liza7vix65mk26yc8lfxcsb1xl65ljrs-python3-3.8.9-env.drv' failed to build
这是怎么回事,我该如何解决?
看起来您的 attrs
派生想要卸载它通过 pytest
依赖项找到的 attrs
库。
也许您可以通过从 attrs
输入中删除 pytest
并禁用检查来构建它。
attrs = buildPythonPackage rec {
pname = "attrs";
version = "20.3.0";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "007pchhxk2nh6m2rgflkkij9xjwysq3fl7xr72cy8i4pw76s6al3";
};
doCheck = false;
};
Nixpkgs 中的 attrs
包更进一步,添加了 tests.pytest
属性,允许 运行 单独进行测试。如此复杂在这里似乎不值得。
我正在尝试在 NixOS 上安装 jupyter-book。我有这个薄片:
{
description = "Introduction to Computational Literary Analysis, a Textbook";
outputs = { self, nixpkgs }: let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
in {
jupyterBook = pkgs.callPackage ./jupyter-book.nix {};
myPython = (nixpkgs.legacyPackages.${system}.python3.withPackages
(ps: with ps; [
# pip
jupyter
jupyterlab
self.jupyterBook
pandas
nltk
# spacy
]));
defaultPackage.${system} = self.myPython;
};
}
导入 jupyter-book.nix,包含这个表达式:
{ python3Packages }:
let
inherit (python3Packages) buildPythonPackage fetchPypi;
attrs = buildPythonPackage rec {
pname = "attrs";
version = "20.3.0";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "007pchhxk2nh6m2rgflkkij9xjwysq3fl7xr72cy8i4pw76s6al3";
};
propagatedBuildInputs = with python3Packages; [
pytest
];
};
click = buildPythonPackage rec {
pname = "click";
version = "7.1";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "1qk0x1bh6pmn2al9kq6cbgvm7pchnzl6ahf4zzpbjljl5lpmabs8";
};
};
jupytext = buildPythonPackage rec {
pname = "jupytext";
version = "1.10.3";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "09f0ra3ndq4sxb0q3pjx713pfyc731y6fkzx93481mc7qm2cym5x";
};
propagatedBuildInputs = with python3Packages; [
toml
pyyaml
markdown-it-py
];
};
markdown-it-py = buildPythonPackage rec {
pname = "markdown-it-py";
version = "0.6.0";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "0nb6i1hqlipbcpdd7kad26sfhwjxaqnd6md7piaslyzg77gi650w";
};
propagatedBuildInputs = with python3Packages; [
attrs
];
};
sphinxExternalTOC = buildPythonPackage rec {
# https://pypi.org/project/sphinx-comments/
pname = "sphinx-external-toc";
version = "0.2.2";
src = fetchPypi {
pname = "sphinx_external_toc";
inherit version;
sha256 = "a72c5861f670f1c7a1b92f2159fc9c7c5370e079cad1e3a7be4b269fa8048e8a";
};
propagatedBuildInputs = with python3Packages; [
sphinx
attrs
click
pyyaml
];
};
sphinxComments = buildPythonPackage rec {
# https://pypi.org/project/sphinx-comments/
pname = "sphinx-comments";
version = "0.0.3";
src = fetchPypi {
inherit version; inherit pname;
sha256 = "00170afff27019fad08e421da1ae49c681831fb2759786f07c826e89ac94cf21";
};
propagatedBuildInputs = with python3Packages; [
sphinx
];
};
in buildPythonPackage rec {
pname = "jupyter-book";
version = "0.11.2";
src = fetchPypi {
inherit version; inherit pname;
sha256 = "e32298e03c19f514c745062891143693c5e001a098bae9d59d2e4434b2099c54";
};
propagatedBuildInputs = with python3Packages; [
# click
linkify-it-py
sphinx
sphinxComments
sphinxExternalTOC
jupytext
];
}
但是,当我尝试使用 nix build
构建它,或使用 nix shell
获得 shell,或使用 nix develop
时,我收到此错误:
❯ nix build
warning: Git tree '/home/jon/Code/book-computational-literary-analysis' is dirty
error: builder for '/nix/store/pp9074i7bmmvfmff4lkdmnj2wkj8vdaj-python3.8-attrs-20.3.0.drv' failed with exit code 1;
last 10 log lines:
> Executing pipInstallPhase
> /build/attrs-20.3.0/dist /build/attrs-20.3.0
> Processing ./attrs-20.3.0-py2.py3-none-any.whl
> Installing collected packages: attrs
> Attempting uninstall: attrs
> Found existing installation: attrs 21.2.0
> Uninstalling attrs-21.2.0:
> ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '_cmp.pyi'
> Consider using the `--user` option or check the permissions.
>
For full logs, run 'nix log /nix/store/pp9074i7bmmvfmff4lkdmnj2wkj8vdaj-python3.8-attrs-20.3.0.drv'.
error: 1 dependencies of derivation '/nix/store/liza7vix65mk26yc8lfxcsb1xl65ljrs-python3-3.8.9-env.drv' failed to build
这是怎么回事,我该如何解决?
看起来您的 attrs
派生想要卸载它通过 pytest
依赖项找到的 attrs
库。
也许您可以通过从 attrs
输入中删除 pytest
并禁用检查来构建它。
attrs = buildPythonPackage rec {
pname = "attrs";
version = "20.3.0";
src = fetchPypi {
inherit pname; inherit version;
sha256 = "007pchhxk2nh6m2rgflkkij9xjwysq3fl7xr72cy8i4pw76s6al3";
};
doCheck = false;
};
Nixpkgs 中的 attrs
包更进一步,添加了 tests.pytest
属性,允许 运行 单独进行测试。如此复杂在这里似乎不值得。