通过 Poetry 中的 bash 命令输出确定要安装的软件包版本

2024-04-03

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

是否有可能做某事(在pyproject.toml)大致如下:

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

where $(path-to-executable --version)bash 命令调用会输出版本吗?

理想情况下,无需运行脚本/Makefile/“““某物”””在诗歌之上(如这个 Git 线程 https://github.com/python-poetry/poetry/issues/144#issuecomment-485287982似乎指向)

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

所以,我试图在 Poetry 中进行依赖解析pyproject.toml有点动态:无论谁尝试安装我的软件包,仍然需要安装libgdal-dev和其他依赖项,但我希望它具有动态性,这样他们就不必编辑pyproject.toml文件来填写their格达尔的版本。另外,这是供内部使用的,因此它只需要在类似 Linux 的系统中工作(不需要 Windows 或 Apple)

先感谢您!


我也在努力保持pyproject.tomlGDAL 版本与安装同步,但我以相反的方式进行:使用 Poetry 中的版本来安装系统库。

不幸的是,诗歌还没有办法只获取包版本 https://github.com/python-poetry/poetry/issues/5128,但经过一番欺骗后我最终得到了this https://github.com/linz/emergency-management-tools/pull/121/files: sudo apt-get --assume-yes install libgdal-dev="$(poetry show gdal | tr --delete ' ' | grep '^version:' | cut --delimiter=':' --fields=2)*"。它获取将要安装的版本;它不需要已经安装。 (幸运的是,Poetry 在传递到管道时不会使用 ANSI 颜色代码格式化输出。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Poetry 中的 bash 命令输出确定要安装的软件包版本 的相关文章

随机推荐