2 回答

TA貢獻1906條經驗 獲得超3個贊
2022 年 7 月更新:如果您的 TOML 文件使用 setuptools 作為其構建系統,setuptools 將愉快地創建和安裝命令行腳本。例如,我的pyproject.toml文件是這樣開頭的:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
pyproject.toml使用這樣的條目擴展您的文件,命名包、模塊和入口點函數名稱:
[project.scripts]
my-client = "my_package.my_module:main_cli"
然后運行安裝序列:
pip3 install .
setuptools 將在我的 Py3.9 虛擬環境的 bin 目錄 (~/.virtualenvs/py39/bin) 中為我安裝一個在適當位置命名的 shell 腳本my-client。
我在做類似的事情,升級一個有 的包setup.py,雖然我沒有現有的腳本。重寫為 usingpyproject.toml我完全刪除了舊setup.py文件。
FWIW 我意識到 OP 要求安裝現有腳本的方法,但我沒有提供。這個答案告訴 setuptools 創建和安裝新腳本。
2023 年 2 月更新:感謝所有投票。如果您正在偷工減料以滿足任意管理截止日期,只需復制粘貼此短pyproject.toml文件并進行調整:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "my_client"
version = "1.2.3"
authors = [{name="Ubr Programmer", email="[email protected]" }]
description = "Client for my awesome system"
readme = "README.md"
dependencies = ["cachetools","requests"]
requires-python = ">=3.9"
[project.scripts]
my-client = "my_package.my_module:main_cli"
[project.urls]
"Homepage" = "https://github.com/your_name_here/something"
"Bug Tracker" = "https://github.com/your_name_here/something/issues"

TA貢獻1784條經驗 獲得超8個贊
pyproject.toml 中是否有適當的位置來指定命令行腳本?
PEP566?(Metadata 2.1) 只定義了Core metadata specifications。因此,答案取決于您的構建系統(注意:PEP518 定義了構建系統概念)。
如果您使用現有的構建工具,例如setuptools
、poetry
和flit
,您只能考慮在pyproject.toml中添加此類選項,前提是該工具支持pyproject.toml中的命令行腳本 (?console_scripts
)。當然,如果你有自己的構建工具,你需要實現一個解析器來解析pyproject.toml中的命令行腳本。
最后,您可以查看以下列表以了解哪些主要構建系統支持pyproject.toml中的命令行腳本 (?console_scripts
)?(2020/Oct):
設置工具:根據PEP621尚未實施
poetry:是的,這是實現的一部分。
flit:是的。
添加回答
舉報