[英]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 -V
或poetry run python -V
確認相同。 此命令也可以在crontab
中使用,以安排簡單的腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.