离线服务器配置 netcdf4 python 环境

2 小时前
/ , ,

阅读此文章之前,你可能需要首先阅读以下的文章才能更好的理解上下文。

离线服务器配置 netcdf4 python 环境

| 一般HPC集群中自带的mpi4py netcdf4 或通过上传的whl安装的库,是指向库本身的netcdf4.so,不支持并行功能

重点: 需要手动编译、安装:mpi4py netcdf4

前置准备:

服务器依赖

使用服务器 mpinetCDFhdf5

module add ...

必须确认服务器上的 netcdf 开启并行

nc-config --has-parallel -> YES

Pip whl

建议使用虚拟环境

  • Cython
  • Cffi
  • pyyaml
# 联网服务器
pip download -d ./python_whl --python-version 3.10 --platform manylinux2014_aarch64 --only-binary :all: **xxx**

# 离线服务器
pip install --no-index --find-links=./python_whl **xxx**

安装包

tar -zxvf netcdf4...
tar -zxvf mpi4py...

本次使用:

netcdf4: 1.7.4

mpi4py: 4.1.2

环境变量

export CC=mpicc
export USE_NCCONFIG=1
export NETCDF4_DIR=...
export HDF5_DIR=...

编译

mpi4py

cd mpi4py...
python setup.py build --mpicc=$(which mpicc)
yhrun --mpi=pmix -n 2 -p mt_module python3 -c "from mpi4py import MPI; print(f'Rank {MPI.COMM_WORLD.Get_rank()}')"

NETCDF4

cd netcdf4...

python setup.py clean --all
python setup.py build
python setup.py install
python3 -c "import netCDF4; print(netCDF4.__version__)"

ERROR记录

NETCDF 编译过程

python setup.py install

ERROR

ValueError: invalid pyproject.toml config: `project.license`.
configuration error: `project.license` must be valid exactly by one definition (2 matches found):

    - keys:
        'file': {type: string}
      required: ['file']
    - keys:
        'text': {type: string}
      required: ['text']

在较新的 Python 打包标准中,project.license 只能选择 file text 其中之一,但 netCDF4 的某些版本在 pyproject.toml 中同时写了这两项,导致校验失败。

解决

license = "MIT"
license-files = ["LICENSE"]

# 改为:

license = {file = "LICENSE"}

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...