O. *_*ynn 6 python versioning setup.py conda
我正在看一个setup.py具有以下语法的:
from setuptools import setup
setup(
...
tests_require=["h5py>=2.9=mpi*",
"mpi4py"]
)
Run Code Online (Sandbox Code Playgroud)
我理解 ">= 的想法,其中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
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时conda install =c conda-forget h5py=3.7=mpi*,我期望得到一个...-mpi_py...捆绑包,但它只是失败了,因为我使用的是 Windows,而且据我所知 Windows 不支持 MPI。(这是有道理的,具有 MPI 的 HPC 集群在 Linux 上运行。)