JuliaPy / JuliaPy/PythonCall.jl

Conflict between julia and python binaries/artifacts

未關閉
#397 7 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
bug
主要語言
Julia
星號
1.1k
分支
86
平均合併
1 天 22 小時
30 天內合併 PR
3

描述

**Affects:** JuliaCall

**Describe the bug**
When using a conda/mamba environment and juliacall I encountered an issue when NetCDF files are read by the julia code. When trying to read the files the julia code would raise the following error and crash the kernel:
```sh
symbol lookup error: .../.julia/artifacts/*/lib/netcdf.so: undefined symbol: H5Pset_all_coll_metadata_ops
```

It turns out that this error only occured if python packages depending on netCDF were imported.

For example, the following code would crash:

```py
import esmpy
from juliacall import Main as jl

jl.seval("using NCDatasets")
ds = jl.Dataset("file.nc")
```

While this runs fine:
```py
from juliacall import Main as jl

jl.seval("using NCDatasets")
ds = jl.Dataset("file.nc")
```

**Workaround:**
I managed to avoid this crash by ensuring that the Julia and Python packages used the exact same version of the netcdf5 and hdf5 binaries, in which case things went fine.
However, this can be very challenging to do.

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

Start by reproducing the two Python examples involving esmpy, juliacall, NCDatasets, and file.nc, then compare the loaded netcdf and hdf5 binaries. Trace where the Julia and Python environments select conflicting artifacts. Done means the demonstrated import order no longer crashes with the undefined H5Pset_all_coll_metadata_ops symbol.

由索引模型根據 Issue 內容生成。

評估

技術堆疊
julia, python
領域
backend
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
需要釐清
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。