Is your feature request related to a problem? Please describe.
While writing tests for Zarr.jl, it's found that I cannot test Zarr.jl with both python-zar v2 and python-zarr v3.
It is caused that PythonCall has monolithic python session and they cannot be restarted after using PythonCall:
using CondaPkg
using PythonCall
# Use Zarr 3.x to test Zarr.jl
CondaPkg.add("zarr", "3.*")
zarr = pyimport("zarr")
CondaPkg.withenv() do
run(`python -c "import zarr; print(zarr.__version__)"`)
end # 3.1.3
println(zarr.__version__) # 3.1.3
# testing...
# Use Zarr 2.x to test Zarr.jl
CondaPkg.add("zarr", "2.*")
zarr = pyimport("zarr")
CondaPkg.withenv() do
run(`python -c "import zarr; print(zarr.__version__)"`)
end # 2.18.7
println(zarr.__version__) # 3.1.3
# testing failed due to
importlib.reload does not useful because the v2 and v3 has different API so it returns error:
julia> importlib = pyimport("importlib")
Python: <module 'importlib' from '/home/.../.../Zarr.jl/test/.CondaPkg/.pixi/envs/default/lib/python3.13/importlib/__init__.py'>
julia> importlib.reload(zarr) # try v2 -> v3
ERROR: Python: ModuleNotFoundError: No module named 'zarr.core.array'; 'zarr.core' is not a package
Python stacktrace:
julia> importlib.reload(zarr) # try v3 -> v2
ERROR: Python: ImportError: cannot import name 'MetadataError' from 'zarr.errors' (/home/.../.../Zarr.jl/test/.CondaPkg/.pixi/envs/default/lib/python3.13/site-packages/zarr/errors.py)
Python stacktrace:
Describe the solution you'd like
Supporting restart of python session will be helpful.
CondaPkg.add("zarr", "2.*")
zarr = pysession.pyimport("zarr")
# testing with zarr v2
PythonCall.reset()
CondaPkg.add("zarr", "3.*")
zarr = pysession.pyimport("zarr")
# testing with zarr v3
Describe alternatives you've considered
Manual starting and ending of python sesssion will also be useful. I'm thinking of
CondaPkg.add("zarr", "2.*")
PythonCall.start() do pysession
zarr = pysession.pyimport("zarr")
# do the rest
end
CondaPkg.add("zarr", "3.*")
PythonCall.start() do pysession
zarr = pysession.pyimport("zarr")
# do the rest
end
Is your feature request related to a problem? Please describe.
While writing tests for Zarr.jl, it's found that I cannot test Zarr.jl with both python-zar v2 and python-zarr v3.
It is caused that
PythonCallhas monolithic python session and they cannot be restarted afterusing PythonCall:importlib.reloaddoes not useful because the v2 and v3 has different API so it returns error:Describe the solution you'd like
Supporting restart of python session will be helpful.
Describe alternatives you've considered
Manual starting and ending of python sesssion will also be useful. I'm thinking of