gpt4 book ai didi

python - 如何使用 pyproject.toml 设置和诗歌运行脚本?

转载 作者:行者123 更新时间:2023-12-01 12:04:20 41 4
gpt4 key购买 nike

  • 我正在使用诗歌来创建 .whl 文件。
  • 我有一个在远程主机上运行的 ftp 服务器。
  • 我编写了一个 python 脚本(log_revision.py),它在数据库中保存 git commit,更多参数,最后将 .whl(诗歌创建)发送到远程服务器(每个 .whl 在不同的路径中服务器,路径保存在数据库中)。

  • 目前我每次运行 poetry build 后手动运行脚本表彰。
    我知道 pyproject.toml[tool.poetry.scripts]但我不明白如何使用它来运行 python 脚本。

    我试过
    [tool.poetry.scripts]
    my-script = "my_package_name:log_revision.py

    然后 poetry run my-script但我总是得到一个错误 AttributeError: module 'my_package_namen' has no attribute 'log_revision'
    1. 有人能帮我理解如何运行祝愿吗?

    作为一个短期选项(没有 git 和参数),我尝试使用 poetry publish -r http://192.168.1.xxx/home/whl -u hello -p world但我收到以下错误
    [RuntimeError]                                 
    Repository http://192.168.1.xxx/home/whl is not defined

    2. 我在做什么,我该如何解决?

    会给予任何帮助,谢谢!

    最佳答案

    目前[tool.poetry.scripts]部分相当于 setuptools console_scripts .
    所以参数必须是有效的模块和方法名称。让我们想象一下您的包裹my_package , 你有 log_revision.py , 它有一个方法 start() .然后你必须写:

    [tool.poetry.scripts]
    my-script = "my_package.log_revision:start"
    这是一个完整的例子:
    你应该有这个文件夹结构:
    my_package
    ├── my_package
    │   ├── __init__.py
    │   └── log_revision.py
    └── pyproject.toml
    pyproject.toml的内容是:
    [tool.poetry]
    name = "my_package"
    version = "0.1.0"
    description = ""
    authors = ["Your Name <you@example.com>"]

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

    [tool.poetry.scripts]
    my-script = "my_package.log_revision:start"

    [build-system]
    requires = ["poetry_core>=1.0.0"]
    build-backend = "poetry.core.masonry.api"
    log_revision.py :
    def start():
    print("Hello")
    运行后 poetry install一旦你应该能够做到这一点:
    $ poetry run my-script  
    Hello
    您不能将某些内容传递给 start()直接方法。相反,您可以使用命令行参数并解析它们,例如与 python argparse .

    关于python - 如何使用 pyproject.toml 设置和诗歌运行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59286983/

    41 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com