OpenSSL version restriction outdated
Just raising this as a new issue, as the previous thread was a question, so I'm aware that my response might not be seen.
I believe Julia now uses a more up to date version of OpenSSL, which is now causing problems when installing certain packages with JuliaCall/PythonCall.
In short, the following error is commonly encountered (on Linux at least)
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/wilf/.julia/packages/PythonCall/WMWY0/src/JlWrap/module.jl", line 27, in seval return self._jl_callmethod($(pyjl_methodnum(pyjlmodule_seval)), expr) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ juliacall.JuliaError: InitError: could not load library "/home/wilf/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so" /lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.3.0' not found (required by /home/wilf/.julia/artifacts/a696e1e3e6b8d3c2c4b67609357ebc5c35eabde1/lib/libssl.so) Stacktrace: [1] dlopen(s::String, flags::UInt32; throw_error::Bool) @ Base.Libc.Libdl ./libdl.jl:117 [2] dlopen(s::String, flags::UInt32) @ Base.Libc.Libdl ./libdl.jl:116 [3] macro expansion @ ~/.julia/packages/JLLWrappers/GfYNv/src/products/library_generators.jl:63 [inlined] [4] __init__() @ OpenSSL_jll ~/.julia/packages/OpenSSL_jll/WaTt1/src/wrappers/x86_64-linux-gnu.jl:16 [5] run_module_init(mod::Module, i::Int64) @ Base ./loading.jl:1134 [6] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String) @ Base ./loading.jl:1122 [7] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}) @ Base ./loading.jl:1067 [8] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128) @ Base ./loading.jl:1581 [9] _tryrequire_from_serialized(modkey::Base.PkgId, build_id::UInt128) @ Base ./loading.jl:1445 [10] _tryrequire_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String) @ Base ./loading.jl:1524 [11] _require(pkg::Base.PkgId, env::String) @ Base ./loading.jl:1990 [12] __require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:1812 [13] #invoke_in_world#3 @ ./essentials.jl:926 [inlined] [14] invoke_in_world @ ./essentials.jl:923 [inlined] [15] _require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:1803 [16] macro expansion @ ./loading.jl:1790 [inlined] [17] macro expansion @ ./lock.jl:267 [inlined] [18] __require(into::Module, mod::Symbol) @ Base ./loading.jl:1753 [19] #invoke_in_world#3 @ ./essentials.jl:926 [inlined] [20] invoke_in_world @ ./essentials.jl:923 [inlined] [21] require(into::Module, mod::Symbol) @ Base ./loading.jl:1746 [22] eval @ ./boot.jl:385 [inlined] [23] eval @ ./Base.jl:88 [inlined] [24] pyjlmodule_seval(self::Module, expr::Py) @ PythonCall.JlWrap ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/module.jl:13 [25] _pyjl_callmethod(f::Any, self_::Ptr{PythonCall.C.PyObject}, args_::Ptr{PythonCall.C.PyObject}, nargs::Int64) @ PythonCall.JlWrap ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/base.jl:67 [26] _pyjl_callmethod(o::Ptr{PythonCall.C.PyObject}, args::Ptr{PythonCall.C.PyObject}) @ PythonCall.JlWrap.Cjl ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/C.jl:63 during initialization of module OpenSSL_jllTo reproduce:
- Create a new python venv using
python3.12 -m venv .venvpip install juliacall(by default this installs Julia 1.11.5)- Start python and run
>> from juliacall import Main as jl >> from juliapkg import add, resolve >> add("Yao", "5872b779-8223-5990-8dd0-5abbb0748c8c") # other packages with OpenSSL deps also cause the error >> resolve() >> jl.seval("using Yao")Info: Python: 3.12.10 Julia: 1.11.5 OS: Linux
Originally posted by @wilf-phasecraft in #587
Looks like a version mismatch of OpenSSL between Python and Julia. I think JuliaPy/pyjuliapkg#55 should fix this. Can you try it out (see the description in the PR for how) and let me know?
Great! I'll try it out, thank you
Great! I'll try it out, thank you
I've actually merged and released it and released PythonCall/JuliaCall so you can just update to.try it out.