我正在尝试通过 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.toml
GDAL 版本与安装同步,但我以相反的方式进行:使用 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(使用前将#替换为@)