src布局Python项目:脚本在独立scripts目录时如何配置project.scripts?
解决方法
方案1:将scripts目录转为可安装模块
给scripts目录添加空的__init__.py文件,使其成为合法Python包:
. +-- scripts | \-- __init__.py | \-- lorem.py ...
修改pyproject.toml,确保安装时包含scripts包,并配置命令入口:
[project] # 保留原有项目配置,新增packages字段 packages = ["bar", "scripts"] # 若用setuptools的自动发现,也可写成: # packages = { find = { where = ["src", "."] } } [project.scripts] foo = "scripts.lorem:ipsum"
安装项目后,scripts模块会被纳入Python路径,foo命令即可正常调用目标函数。
方案2:直接指定脚本文件(无需转模块)
如果不想将scripts转为包,可使用setuptools的scripts配置项直接关联脚本文件:
[tool.setuptools] scripts = ["scripts/lorem.py"]
同时在scripts/lorem.py末尾添加启动逻辑:
def ipsum(): # 你的业务逻辑 pass if __name__ == "__main__": ipsum()
这种方式安装后,会生成与脚本同名的命令(即lorem),若需指定命令名为foo,建议优先使用方案1。
内容的提问来源于stack exchange,提问作者InSync
相关产品推荐
相关产品推荐

