[英]Package a Python project to be run in the console: pyproject.toml file structure
我有一個 Python 項目的以下結構,我希望 package 在控制台上有一個入口點。
example_prog
├── src
├ └── my_module_name
├ └── app.py
├ └── blueprint.py
├ └── cli.py
├ └── config.py
├ └── db.py
├ └── search.py
├ └── wsgi.py
├ └── static
├ └── templates
├── pyproject.toml
└── README.md
cli.py 程序包含一個 def main() function 啟動如下:
def main():
parser = argparse.ArgumentParser(prog="my_module_name")
我已按照此鏈接中的說明進行操作,並具有以下應包含主文件路徑的 pyproject.toml。
[project.scripts]
futdash = "futdash:cli:main"
但是當我使用 twine(在 testpypi 上)構建時如下(這是我通常為其他 package 建築所做的):
python3 -m build
python3 -m twine upload --repository testpypi dist/*
但我收到以下錯誤:
* Creating venv isolated environment...
* Installing packages in isolated environment... (setuptools)
* Getting build dependencies for sdist...
configuration error: `project.scripts.my_module_name` must be python-entrypoint-reference
DESCRIPTION:
Reference to a Python object. It is either in the form
``importable.module``, or ``importable.module:object.attr``.
GIVEN VALUE:
"my_module_name:cli:main"
OFFENDING RULE: 'format'
DEFINITION:
{
"type": "string",
"format": "python-entrypoint-reference",
"$comment": "https://packaging.python.org/specifications/entry-points/"
}
..
..
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_sdist
return self._get_build_requires(config_settings, requirements=[])
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/build_meta.py", line 320, in _get_build_requires
self.run_setup()
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/build_meta.py", line 335, in run_setup
exec(code, locals())
File "<string>", line 1, in <module>
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/__init__.py", line 87, in setup
return distutils.core.setup(**attrs)
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 159, in setup
dist.parse_config_files()
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/dist.py", line 867, in parse_config_files
pyprojecttoml.apply_configuration(self, filename, ignore_option_errors)
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/config/pyprojecttoml.py", line 62, in apply_configuration
config = read_configuration(filepath, True, ignore_option_errors, dist)
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/config/pyprojecttoml.py", line 126, in read_configuration
validate(subset, filepath)
File "/tmp/build-env-g403qutw/lib/python3.9/site-packages/setuptools/config/pyprojecttoml.py", line 51, in validate
raise ValueError(f"{error}\n{summary}") from None
ValueError: invalid pyproject.toml config: `project.scripts.my_module_name`.
configuration error: `project.scripts.my_module_name` must be python-entrypoint-reference
ERROR Backend subprocess exited when trying to invoke get_requires_for_build_sdist
這是文件結構的問題並意味着更改[project.scripts]
中的路徑嗎?
嘗試將第一個:
冒號更改為 a .
點。 這應該工作格式的結構:
<Project>.<File>:<Function>
[project.scripts]
futdash = "futdash:cli:main"
到:
[project.scripts]
futdash = "futdash.cli:main"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.