python - 如何为命令行脚本组织一个带有诗歌的python项目
问题描述
在进行诗歌初始化时,我得到了以下结构:
/packagename
__init__.py
packagename.py
/packagename
/tests
__init__.py
test_packagename.py
pyproject.toml
这对于一个包来说很好,但我不知道如何使它适合命令行脚本。当我有一个像 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
。
推荐阅读
- r - 从所述 data.frame 对象列表的列中的列表中添加 data.frame 对象的名称
- robocopy - 如果文件不存在,则将文件从源复制到目标
- android - ItemToucherHelper 不使用垂直 LinearLayoutManager 在 recyclerView 中滑动
- python - Custom CoreML output layer that sums multiArray output
- javascript - 为什么 npm install 在 Windows 10 上这么慢?
- django - 如何在视频群聊中获取远程用户的地理坐标?
- c - 如何让 readline() 在 Ctrl+C 上退出?
- javascript - Jest --findRelatedTests 标志未找到相关测试
- javascript - 重命名从服务器收到的变量名称?
- c# - 如何使用 C# ASP.Net Core 3.1 在服务器端检查 cookie 选项