在 pyproject.toml 中使用带有孵化后端的直接引用

tim*_*tim 8 python dependencies pip package pyproject.toml

如果我正确理解孵化的文档,在pyproject.toml以孵化作为后端的情况下,我应该能够使用本地直接引用模式在包文件夹中添加本地包<NAME> @ {root:uri}/pkg_inside_project。

\n

这是一个最小的非工作示例,在包中,我将依赖项添加到名为viastackoverflow_demo的包中。my_local_packagemy_local_package @ {root:uri}/my_local_package

\n

当我克隆存储库,进入文件夹并尝试stackoverflow_demo通过运行安装时pip install -e .,我收到一个很长的错误(见下文)。

\n

如何正确使用本地包直接引用?

\n

旁注:

\n
    \n
  • 我正在使用-epip 标志,因为我希望能够以可编辑模式安装它。应该支持可编辑和正常两种模式。目前,它在任何一种模式下都不起作用,并且错误(几乎)相同。
  • \n
  • 我使用的是pip22.2.2版本
  • \n
  • 不幸的是,我只能使用pip安装,没有其他包管理器。
  • \n
  • 我无法从某些远程 git 存储库等安装本地包。
  • \n
\n

pip install错误的输出(删除个人信息):

\n
Looking in indexes: [artifactstore-1], [artifactstore-2]\nObtaining file:///C:/Path/to/demo/stackoverflow_demo\n  Installing build dependencies ... done\n  Checking if build backend supports build_editable ... done\n  Getting requirements to build editable ... done\n  Preparing editable metadata (pyproject.toml) ... error\n  error: subprocess-exited-with-error\n\n  \xc3\x97 Preparing editable metadata (pyproject.toml) did not run successfully.\n  \xe2\x94\x82 exit code: 1\n  \xe2\x95\xb0\xe2\x94\x80> [27 lines of output]\n      Traceback (most recent call last):\n        File "C:\\Path\\to\\demo\\stackoverflow_demo\\venv\\lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 177, in prepare_metadata_for_build_editable\n          hook = backend.prepare_metadata_for_build_editable\n      AttributeError: module \'hatchling.build\' has no attribute \'prepare_metadata_for_build_editable\'\n     \n      During handling of the above exception, another exception occurred:\n     \n      Traceback (most recent call last):\n        File "C:\\Path\\to\\demo\\stackoverflow_demo\\venv\\lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 363, in <module>\n          main()\n        File "C:\\Path\\to\\demo\\stackoverflow_demo\\venv\\lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 345, in main\n          json_out[\'return_val\'] = hook(**hook_input[\'kwargs\'])\n        File "C:\\Path\\to\\demo\\stackoverflow_demo\\venv\\lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 186, in prepare_metadata_for_build_editable\n          whl_basename = build_hook(metadata_directory, config_settings)\n        File "C:\\Other\\Path\\to\\Local\\Temp\\1\\pip-build-env-4qkba2h_\\overlay\\Lib\\site-packages\\hatchling\\build.py", line 61, in build_editable\n          return os.path.basename(next(builder.build(wheel_directory, [\'editable\'])))\n        File "C:\\Other\\Path\\to\\Local\\Temp\\1\\pip-build-env-4qkba2h_\\overlay\\Lib\\site-packages\\hatchling\\builders\\plugin\\interface.py", line 80, in build\n          self.metadata.validate_fields()\n        File "C:\\Other\\Path\\to\\Local\\Temp\\1\\pip-build-env-4qkba2h_\\overlay\\Lib\\site-packages\\hatchling\\metadata\\core.py", line 168, in validate_fields\n          self.core.validate_fields()\n        File "C:\\Other\\Path\\to\\Local\\Temp\\1\\pip-build-env-4qkba2h_\\overlay\\Lib\\site-packages\\hatchling\\metadata\\core.py", line 1129, in validate_fields\n          getattr(self, attribute)\n        File "C:\\Other\\Path\\to\\Local\\Temp\\1\\pip-build-env-4qkba2h_\\overlay\\Lib\\site-packages\\hatchling\\metadata\\core.py", line 1017, in dependencies\n          self._dependencies = list(self.dependencies_complex)\n        File "C:\\Other\\Path\\to\\Local\\Temp\\1\\pip-build-env-4qkba2h_\\overlay\\Lib\\site-packages\\hatchling\\metadata\\core.py", line 1001, in dependencies_complex\n          raise ValueError(\n      ValueError: Dependency #1 of field `project.dependencies` cannot be a direct reference\n      [end of output]\n\n  note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: metadata-generation-failed\n\n\xc3\x97 Encountered error while generating package metadata.\n\xe2\x95\xb0\xe2\x94\x80> See above for output.\n\nnote: This is an issue with the package mentioned above, not pip.\nhint: See above for details.\n
Run Code Online (Sandbox Code Playgroud)\n

tim*_*tim 8

从问题跟踪器我收到了答案,我只需将以下两行添加到pyproject.toml. 请参阅文档。

[tool.hatch.metadata]
allow-direct-references = true
Run Code Online (Sandbox Code Playgroud)