我正在查看具有此语法的setup.py
:
from setuptools import setup
setup(
...
tests_require=["h5py>=2.9=mpi*",
"mpi4py"]
)
我明白">="其中h5py
应该至少是2.9版本,但我不能为我的生命理解=mpi*
之后。它是说版本应该以某种方式匹配mpi版本,同时也至少是2.9?
我找不到任何解释指定python包版本的东西,也解释了单个=
的使用。
我发现它使用的唯一其他地方是一些晦涩的博客文章,似乎暗示它有点像用别名导入包,这对我来说没有多大意义;还有mpi4py文档,其中包含一个命令行代码片段conda install -c conda-forge h5py=*=mpi* netcdf4=*=mpi*
,但没有真正解释它。
简短回答
=mpi*
限定符表示您要安装预编译的h5py
,并支持MPI。
详细信息如果您查看h5py的文档,您将看到必须显式地使用或不使用MPI构建它的引用(例如,参见https://docs.h5py.org/en/latest/build.html)。
当您查看conda-forge下载文件(https://anaconda.org/conda-forge/h5py/files)时,您还会看到有一堆nompi
变体和一堆mpi
变体。
添加=mpi*
触发使用MPI编译的版本,以便您获得并行MPI支持,而我怀疑默认版本将不支持MPI。
使用和不使用
的实验当我做conda install -c conda-forge h5py=3.7
时,conda建议下载这个包:
h5py-3.7.0-nompi_py39hd4deaf1_100
但是当我做conda install =c conda-forget h5py=3.7=mpi*
时,我期望...-mpi_py...
包,但它只是失败了,因为我在Windows上,据我所知,Windows上不支持MPI。(这是有道理的,具有MPI的HPC集群运行在Linux上。)