Nix

如何在 nixpkgs 中使用新的 pythonOutputDistHook

  • September 30, 2022

我已經嘗試了很多方法來讓我的項目創建一個result-dist帶有輪子的文件夾,我可以發佈到 PyPI。不知何故,即使我使用的是 nixpkgs 版本pythonOutputDistHook,我也只能得到一個result文件夾,而不是result-dist文件夾。

到目前為止我的調查:

  1. pythonOutputDistHook是可選的,基於withDistOutput.
  2. withDistOutput如果format包含 之一,則為真["pyproject" "setuptools" "flit"]
  3. format ? "setuptools"而且我的程式碼沒有設置format,所以pythonOutputDistHook應該包括在內。
  4. 我已經驗證了pythonOutputDistHook它在我的 nixpkgs中:
$ cd nixpkgs
$ git checkout 9c14978f845f33b152f722709caf42148580a30c
HEAD is now at 9c14978f845 Merge master into staging-next
$ git grep pythonOutputDistHook
pkgs/development/interpreters/python/hooks/default.nix:  pythonOutputDistHook = callPackage ({ }:
pkgs/development/interpreters/python/mk-python-derivation.nix:, pythonOutputDistHook
pkgs/development/interpreters/python/mk-python-derivation.nix:      pythonOutputDistHook
pkgs/top-level/python-packages.nix:    pythonOutputDistHook

有沒有什麼東西會pkgs在其中一個 Nix 文件中註入不同的參數?

Nixpkgs ( stdenv.mkDerivation) 中的標準建構器可以創建多個輸出。一些典型輸出是預設輸出,out還有lib、和。任何派生都可以指定它創建的輸出。輸出可以直接引用:bin``dev``doc

$ nix-build -A bash.dev
/nix/store/pji7665awsg1fcp2irhnfm3508lvsgh0-bash-5.1-p16-dev

從最近開始, (在幕後buildPythonPackage呼叫)創建了一個輸出,其中包含用於分發的工件,特別是輪子:stdenv.mkDerivation``dist

$ find $(nix-build -A python3.pkgs.pytest.dist)
/nix/store/flg6ahbbmppq5vpjcxdhzs9fz7dx86vq-python3.10-pytest-7.1.3-dist
/nix/store/flg6ahbbmppq5vpjcxdhzs9fz7dx86vq-python3.10-pytest-7.1.3-dist/pytest-7.1.3-py3-none-any.whl

引用自:https://unix.stackexchange.com/questions/719283