如何用命令行脚本来组织一个 python 项目

Man*_*uel 11 python python-poetry

在进行诗歌初始化时,我得到了以下结构:

/packagename
  __init__.py
  packagename.py
 /packagename
  /tests
   __init__.py
   test_packagename.py
pyproject.toml
Run Code Online (Sandbox Code Playgroud)

这对于包来说很好,但我不知道如何使其适合命令行脚本。当我有一个像 script.py 这样的脚本时,其代码结构如下:

在文件 script.py 中:

#!/usr/bin/python3

def main():
  print("Ok")

if __name__ == '__main__':
  main()
Run Code Online (Sandbox Code Playgroud)

它并不打算用作 python 模块,但是,它可能具有用诗歌处理的有趣的依赖项和测试。

在一些示例中,显示了以下诗歌语法:

[tool.poetry.scripts]
cli_script = 'script.py:main'
Run Code Online (Sandbox Code Playgroud)

然后可以使用以下命令调用脚本:

poetry run cli_script
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些关于如何正确组织我的诗歌项目以供此类使用的指南。

例如,我一直在寻找诗歌初始化的选项(例如诗歌初始化--脚本)。但似乎这种用例并未包含在 new/init 诗歌选项中。

fin*_*mer 16

我猜你的意思是“诗歌初始化” poetry new。但你的结构看起来也有点奇怪。我建议采用以下结构:

\n
packagename\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 packagename\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 cli.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test_packagename.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n
Run Code Online (Sandbox Code Playgroud)\n

看起来pyproject.toml像这样:

\n
[tool.poetry]\nname = "packagename"\nversion = "0.1.0"\ndescription = ""\nauthors = ["finswimmer <finswimmer@example.org>"]\n\n[tool.poetry.scripts]\ncli_script = "packagename.cli:main"\n\n[tool.poetry.dependencies]\npython = "^3.6"\n\n[tool.poetry.dev-dependencies]\npytest = "^5.2"\n\n[build-system]\nrequires = ["poetry>=1.0"]\nbuild-backend = "poetry.masonry.api"\n
Run Code Online (Sandbox Code Playgroud)\n

cli.py就像你的例子一样:

\n
[tool.poetry]\nname = "packagename"\nversion = "0.1.0"\ndescription = ""\nauthors = ["finswimmer <finswimmer@example.org>"]\n\n[tool.poetry.scripts]\ncli_script = "packagename.cli:main"\n\n[tool.poetry.dependencies]\npython = "^3.6"\n\n[tool.poetry.dev-dependencies]\npytest = "^5.2"\n\n[build-system]\nrequires = ["poetry>=1.0"]\nbuild-backend = "poetry.masonry.api"\n
Run Code Online (Sandbox Code Playgroud)\n

之后就poetry install可以运行了poetry run cli_script

\n