tim*_*tim 8 python dependencies pip package pyproject.toml
如果我正确理解孵化的文档,在pyproject.toml以孵化作为后端的情况下,我应该能够使用本地直接引用模式在包文件夹中添加本地包<NAME> @ {root:uri}/pkg_inside_project。
这是一个最小的非工作示例,在包中,我将依赖项添加到名为viastackoverflow_demo的包中。my_local_packagemy_local_package @ {root:uri}/my_local_package
当我克隆存储库,进入文件夹并尝试stackoverflow_demo通过运行安装时pip install -e .,我收到一个很长的错误(见下文)。
如何正确使用本地包直接引用?
\n旁注:
\n-epip 标志,因为我希望能够以可编辑模式安装它。应该支持可编辑和正常两种模式。目前,它在任何一种模式下都不起作用,并且错误(几乎)相同。pip22.2.2版本pip安装,没有其他包管理器。pip install错误的输出(删除个人信息):
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.\nRun Code Online (Sandbox Code Playgroud)\n
从问题跟踪器我收到了答案,我只需将以下两行添加到pyproject.toml. 请参阅文档。
[tool.hatch.metadata]
allow-direct-references = true
Run Code Online (Sandbox Code Playgroud)