conda install 和 conda build 导致不同的依赖版本
conda install and conda build result in different dependency versions
我正在尝试构建一个包含 h5py
的包。使用 conda build
时,似乎安装了错误版本的依赖项。它安装 3.2.1-py37h6c542dc_0
,其中包括 hdf5: 1.10.6-nompi_h6a2412b_1114
。
问题是这个 hdf5
库似乎有这些设置:
(Read-Only) S3 VFD: yes
这对我来说是一个错误。当只是 运行 conda install h5py==3.2.1
时,它会安装正确的版本 (hdf5-1.10.6-nompi_h3c11f04_101
)。
为什么会有差异?
"为什么有区别?
使用 conda install h5py=3.2.1
还包括当前环境中的所有先前约束,而在 conda build
运行 期间,仅根据包指定的要求创建新环境。也就是更像运行宁conda create -n foo h5py=3.2.1
.
所以,这涵盖了该机制,但我们还可以查看特定的包依赖关系,以了解为什么当前环境限制为较旧的 hdf5-1.10.6-nompi_h3c11f04_101
,OP 指出哪个是首选。这是两者的包装信息:
hdf5-1.10.6-nompi_h6a2412b_1114
$ mamba search --info conda-forge/linux-64::hdf5[version='1.10.6',build='nompi_h6a2412b_1114']
hdf5 1.10.6 nompi_h6a2412b_1114
-------------------------------
file name : hdf5-1.10.6-nompi_h6a2412b_1114.tar.bz2
name : hdf5
version : 1.10.6
build : nompi_h6a2412b_1114
build number: 1114
size : 3.1 MB
license : LicenseRef-HDF5
subdir : linux-64
url : https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-nompi_h6a2412b_1114.tar.bz2
md5 : 0a2984b78f51148d7ff6219abe73509e
timestamp : 2021-01-08 23:10:11 UTC
dependencies:
- libcurl >=7.71.1,<8.0a0
- libgcc-ng >=9.3.0
- libgfortran-ng
- libgfortran5 >=9.3.0
- libstdcxx-ng >=9.3.0
- openssl >=1.1.1i,<1.1.2a
- zlib >=1.2.11,<1.3.0a0
hdf5-1.10.6-nompi_h3c11f04_101
$ mamba search --info conda-forge/linux-64::hdf5[version='1.10.6',build='nompi_h3c11f04_101']
hdf5 1.10.6 nompi_h3c11f04_101
------------------------------
file name : hdf5-1.10.6-nompi_h3c11f04_101.tar.bz2
name : hdf5
version : 1.10.6
build : nompi_h3c11f04_101
build number: 101
size : 3.0 MB
license : HDF5
subdir : linux-64
url : https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-nompi_h3c11f04_101.tar.bz2
md5 : 9f1ccc4d36edf8ea15ce19f52cf6d601
timestamp : 2020-07-31 12:26:29 UTC
dependencies:
- libgcc-ng >=7.5.0
- libgfortran-ng >=7,<8.0a0
- libstdcxx-ng >=7.5.0
- zlib >=1.2.11,<1.3.0a0
这里的区别在于后者适用于旧版本的libgcc-ng
、libstdcxx-ng
和libgfortran-ng
(9.3.0以下),并且对openssl
或 libcurl
。因此,我们可以猜测调用 conda install h5py=3.2.1
的当前环境具有这些限制之一。
我正在尝试构建一个包含 h5py
的包。使用 conda build
时,似乎安装了错误版本的依赖项。它安装 3.2.1-py37h6c542dc_0
,其中包括 hdf5: 1.10.6-nompi_h6a2412b_1114
。
问题是这个 hdf5
库似乎有这些设置:
(Read-Only) S3 VFD: yes
这对我来说是一个错误。当只是 运行 conda install h5py==3.2.1
时,它会安装正确的版本 (hdf5-1.10.6-nompi_h3c11f04_101
)。
为什么会有差异?
"为什么有区别?
使用 conda install h5py=3.2.1
还包括当前环境中的所有先前约束,而在 conda build
运行 期间,仅根据包指定的要求创建新环境。也就是更像运行宁conda create -n foo h5py=3.2.1
.
所以,这涵盖了该机制,但我们还可以查看特定的包依赖关系,以了解为什么当前环境限制为较旧的 hdf5-1.10.6-nompi_h3c11f04_101
,OP 指出哪个是首选。这是两者的包装信息:
hdf5-1.10.6-nompi_h6a2412b_1114
$ mamba search --info conda-forge/linux-64::hdf5[version='1.10.6',build='nompi_h6a2412b_1114']
hdf5 1.10.6 nompi_h6a2412b_1114
-------------------------------
file name : hdf5-1.10.6-nompi_h6a2412b_1114.tar.bz2
name : hdf5
version : 1.10.6
build : nompi_h6a2412b_1114
build number: 1114
size : 3.1 MB
license : LicenseRef-HDF5
subdir : linux-64
url : https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-nompi_h6a2412b_1114.tar.bz2
md5 : 0a2984b78f51148d7ff6219abe73509e
timestamp : 2021-01-08 23:10:11 UTC
dependencies:
- libcurl >=7.71.1,<8.0a0
- libgcc-ng >=9.3.0
- libgfortran-ng
- libgfortran5 >=9.3.0
- libstdcxx-ng >=9.3.0
- openssl >=1.1.1i,<1.1.2a
- zlib >=1.2.11,<1.3.0a0
hdf5-1.10.6-nompi_h3c11f04_101
$ mamba search --info conda-forge/linux-64::hdf5[version='1.10.6',build='nompi_h3c11f04_101']
hdf5 1.10.6 nompi_h3c11f04_101
------------------------------
file name : hdf5-1.10.6-nompi_h3c11f04_101.tar.bz2
name : hdf5
version : 1.10.6
build : nompi_h3c11f04_101
build number: 101
size : 3.0 MB
license : HDF5
subdir : linux-64
url : https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-nompi_h3c11f04_101.tar.bz2
md5 : 9f1ccc4d36edf8ea15ce19f52cf6d601
timestamp : 2020-07-31 12:26:29 UTC
dependencies:
- libgcc-ng >=7.5.0
- libgfortran-ng >=7,<8.0a0
- libstdcxx-ng >=7.5.0
- zlib >=1.2.11,<1.3.0a0
这里的区别在于后者适用于旧版本的libgcc-ng
、libstdcxx-ng
和libgfortran-ng
(9.3.0以下),并且对openssl
或 libcurl
。因此,我们可以猜测调用 conda install h5py=3.2.1
的当前环境具有这些限制之一。