【问题标题】:Determine version of package to install via bash command's output in Poetry通过 bash 命令在 Poetry 中的输出确定要安装的包版本
【发布时间】:2023-01-17 11:41:39
【问题描述】:

我正在尝试通过 Poetry 安装 Python 包,其安装版本应根据 Bash 命令的输出(~返回值)确定。

是否可以按照以下方式做某事(在pyproject.toml中):

[tool.poetry.dependencies]
python = "^3.8"
this-package = "^$(path-to-executable --version)"

$(path-to-executable --version) 是将输出版本的 bash 命令调用在哪里?

理想情况下,无需运行脚本/Makefile/“““某物”””在 Poetry 之上(如 this Git thread 中所示似乎指向)

具体来说,这是因为我正在尝试安装 GDAL。我们不使用太高级的功能,所以几乎任何版本都可以。但是,要安装的 Python 包在很大程度上取决于系统中安装的 Gdal 可执行文件(及其库)的版本。可以确定在终端中运行gdal-config --version。在我的例子中(Ubuntu 18.02),该命令返回2.2.3,但在 Ubuntu 中永远不会返回更高的值。

所以,我正在尝试使 Poetry 的 pyproject.toml 中的依赖项解析变得有点动态:无论谁试图安装我的包,仍然需要安装 libgdal-dev 和其他依赖项,但我希望它是一个 tiiiiiiny有点动态,所以他们不必编辑 pyproject.toml 文件来填充他们的Gdal 版本。此外,这是供内部使用的,因此它只需要在类似 Linux 的系统中工作(没有 Windows 或 Apple)

先感谢您!

【问题讨论】:

    标签: python installation dependencies gdal python-poetry


    【解决方案1】:

    我还试图使 pyproject.toml GDAL 版本与安装保持同步,但我正在以相反的方式进行:使用 Poetry 中的版本来安装系统库。

    不幸的是,Poetry 还没有找到get just the package version 的方法,但经过一番折腾,我最终得到了thissudo apt-get --assume-yes install libgdal-dev="$(poetry show gdal | tr --delete ' ' | grep '^version:' | cut --delimiter=':' --fields=2)*"。它获取将要安装的版本;它不需要已经安装。 (幸运的是,当传递到管道时,Poetry 不会使用 ANSI 颜色代码格式化输出。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 2022-08-14
      • 2014-07-02
      • 2021-03-30
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      相关资源
      最近更新 更多