【问题标题】:How to globally override a pythonPackage in nix如何在nix中全局覆盖pythonPackage
【发布时间】:2021-12-17 16:04:37
【问题描述】:

我正在尝试在 nix 中全局覆盖 python 包 (uvloop),以便黑色看到覆盖。

uvloop(python 包)测试对我来说失败了,因为我在防火墙后面工作。我可以通过直接编辑nixpkgs派生(呃)来设置doCheck = false来构建使用uvloop的东西。

我正在尝试在叠加层中对此进行编码,但没有成功 - 叠加层被读取(例如,语法错误导致失败),但我在叠加层中所做的任何操作实际上都不会阻止测试运行。

我尝试了来自 https://nixos.wiki/wiki/Overlayshttps://nixos.org/manual/nixpkgs/stable/#how-to-override-a-python-package-using-overlaysHow to use custom python with existing packages - nix derivation? 的提示(使用 packageOverrides 覆盖 python;使用 pythonOverrides;以及使用和不使用 overridePythonAttrs);适用于 python3 和 python39;但没有成功。

例如,

self: super: {
  python3 = super.python3.override {
    packageOverrides = pyself: pysuper: {
      uvloop = pysuper.uvloop.overrideAttrs (_: {
        doCheck = false;
      });
    };
  };
}
    

对于奖励积分,我想为 python 包 uvloop 的所有实例实现这一点——不仅仅是 3.9 中的那个——但我会尽我所能获得帮助。

谢谢,

【问题讨论】:

    标签: python nix


    【解决方案1】:

    以下内容对我有用。它将补丁应用于 twitch-chat-downloader(Python 应用程序)和 twitch-python(twitch-chat-downloader 使用的 Python 库)的补丁。 nix-env -iA nixpkgs.twitch-chat-downloader 安装了 twitch-chat-downloader 的补丁副本,它使用了 twitch-python 的补丁副本。

    {
      packageOverrides = pkgs: {
        python3 = pkgs.python3.override {
          packageOverrides = python-self: python-super: {
            twitch-python = python-super.twitch-python.overrideAttrs (attrs: {
              patches = (attrs.patches or []) ++ [
                ./twitch-allow-no-token.patch
              ];
            });
          };
        };
    
        twitch-chat-downloader = pkgs.twitch-chat-downloader.overrideAttrs (attrs: {
          patches = (attrs.patches or []) ++ [
            ./twitch-chat-downloader-no-oauth.patch
          ];
        });
      };
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 2021-05-04
      • 2019-12-18
      • 2022-11-10
      • 2014-09-27
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多