簡體   English   中英

如何使用命令行腳本的詩歌組織 python 項目

[英]How to organize a python project with poetry for a command line script

在進行詩歌初始化時,我得到了以下結構:

/packagename
  __init__.py
  packagename.py
 /packagename
  /tests
   __init__.py
   test_packagename.py
pyproject.toml

這對於 package 來說很好,但我不知道如何使它適合命令行腳本。 當我有一個像 script.py 這樣的腳本時,它的代碼結構如下:

在文件 script.py 中:

#!/usr/bin/python3

def main():
  print("Ok")

if __name__ == '__main__':
  main()

它不打算用作 python 模塊,但是,它可能具有與詩歌一起處理的有趣的依賴項和測試。

在某些示例中,顯示了以下詩歌語法:

[tool.poetry.scripts]
cli_script = 'script.py:main'

然后可以使用以下命令調用腳本:

poetry run cli_script

我正在尋找一些關於如何正確組織我的詩歌項目以供此類使用的指南。

例如,我已經尋找了詩歌 init 的選項(如詩歌 init --script)。 但似乎這種用例並未包含在 new/init 詩歌選項中。

“詩歌初始化”我猜你的意思是poetry new 但是你的結構看起來也有點奇怪。 我建議采用以下結構:

packagename
├── packagename
│   ├── __init__.py
│   └── cli.py
├── tests
│   ├── __init__.py
│   └── test_packagename.py
└── pyproject.toml

pyproject.toml看起來像這樣:

[tool.poetry]
name = "packagename"
version = "0.1.0"
description = ""
authors = ["finswimmer <finswimmer@example.org>"]

[tool.poetry.scripts]
cli_script = "packagename.cli:main"

[tool.poetry.dependencies]
python = "^3.6"

[tool.poetry.dev-dependencies]
pytest = "^5.2"

[build-system]
requires = ["poetry>=1.0"]
build-backend = "poetry.masonry.api"

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

#!/usr/bin/python3

def main():
  print("Ok")

if __name__ == '__main__':
  main()

poetry install后,您可以運行poetry run cli_script

或者,您可以運行:

poetry run python3 script.py

在哪里:

  • script.py是具有 python 代碼的文件的名稱。
  • python3是詩歌虛擬環境中的 python 可執行文件。 這也可以是python ,具體取決於您擁有的 python 版本。 在執行上述命令之前,您可以使用poetry run python3 -Vpoetry run python -V確認相同。

此命令也可以在crontab中使用,以安排簡單的腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM