conda环境下HPC集群使用pyvoro模块遇导入错误求助
解决pyvoro导入时
__cxa_throw_bad_array_new_length未定义的问题 问题本质
这个错误是因为编译pyvoro依赖的C++扩展时使用的GCC版本,与HPC集群运行环境的GCC版本不兼容,导致动态链接时找不到对应的符号。本地能正常运行是因为编译和运行环境的GCC版本一致,而HPC集群的系统库或环境配置与本地存在差异。
解决步骤
1. 匹配集群的GCC版本
首先查看集群可用的GCC版本:
gcc --version module avail gcc
选择集群预装的、版本≥5.1的GCC(该符号从GCC 5.1开始引入),加载对应的模块:
module load gcc/7.5.0 # 替换为集群实际提供的可用版本
2. 创建适配的conda环境
新建conda环境时,强制使用集群加载的GCC进行编译,避免conda自带编译器与系统库冲突:
conda create -n pyvoro_env python=3.6 # 保持与原环境一致的Python版本 conda activate pyvoro_env # 设置环境变量,指定编译器路径 export CC=$(which gcc) export CXX=$(which g++) # 确保编译时能找到conda环境的头文件和库 export CPPFLAGS="-I$CONDA_PREFIX/include" export LDFLAGS="-L$CONDA_PREFIX/lib -Wl,-rpath,$CONDA_PREFIX/lib"
3. 从源码编译安装pyvoro
放弃预编译的pip包,直接从源码编译,确保适配集群环境:
# 先卸载已安装的相关包 pip uninstall -y pyvoro voroplusplus # 克隆pyvoro源码仓库 git clone https://github.com/joe-jordan/pyvoro.git cd pyvoro # 编译并安装 python setup.py install
4. 验证安装
在激活的conda环境中运行测试脚本:
python test.py
5. 备选方案:使用conda-forge预编译包
如果源码编译仍有问题,尝试安装conda-forge提供的适配多环境版本:
conda activate pyvoro_env conda install -c conda-forge pyvoro
内容的提问来源于stack exchange,提问作者Ash141
相关产品推荐
相关产品推荐

