我尝试了很多方法来完成我的项目创建一个result-dist
带有轮子的文件夹,我可以将其发布到 PyPI。不知何故,即使我使用的是 nixpkgs 版本pythonOutputDistHook
在其中,我只得到一个result
文件夹,而不是一个result-dist
文件夹。
到目前为止我的调查:
pythonOutputDistHook
是可选的,基于withDistOutput
.withDistOutput
format
如果包含其中之一,则为 true["pyproject" "setuptools" "flit"]
。format ? "setuptools"
我的代码没有设置format
,所以pythonOutputDistHook
应该包含在内。我已经验证过它
pythonOutputDistHook
在我的尼克斯包装:$ 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 文件之一注入不同的参数?
答案1
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