Affects: PythonCall
Describe the bug
When both OpenSSL and PythonCall are loaded pyimport("ssl") fails if an external python executable is used.
julia> ENV["JULIA_PYTHONCALL_EXE"] = joinpath(ENV["MAMBA_ROOT_PREFIX"], "bin", "python")
julia> using OpenSSL, PythonCall
julia> println(pyimport("sys").executable)
julia> pyimport("ssl")
/opt/conda/bin/python
ERROR: Python: ImportError: /home/mambauser/.julia/artifacts/625d0c7f43b3ae48c9d49a1a17970e8e9d7e271b/lib/libcrypto.so: version `OPENSSL_3.3.0' not found (required by /opt/conda/lib/python3.10/lib-dynload/_ssl.cpython-310-aarch64-linux-gnu.so)
Python stacktrace:
[1] <module>
@ /opt/conda/lib/python3.10/ssl.py:99
Obviously, the python import tries to load Julia's OpenSSL cryptolibrary although the calling python executable is correctly set.
A workaround is to import the ssl module before loading OpenSSL. However, I am not sure whether Julia's OpenSSL will function properly.
julia> ENV["JULIA_PYTHONCALL_EXE"] = joinpath(ENV["MAMBA_ROOT_PREFIX"], "bin", "python")
julia> using PythonCall
julia> println(pyimport("sys").executable)
julia> using OpenSSL
julia> pyimport("ssl")
Python: <module 'ssl' from '/opt/conda/lib/python3.10/ssl.py'>
Interestingly, I didn't succeed in using the CondaPkg's python version:
julia> ENV["JULIA_CONDAPKG_BACKEND"] = "MicroMamba";
julia> using PythonCall
(@v1.10) pkg> conda st
CondaPkg Status /home/mambauser/.julia/environments/v1.10/CondaPkg.toml
Environment
/home/mambauser/.julia/environments/v1.10/.CondaPkg/env
Packages
pandas v2.2.2
julia> pyimport("sys").executable
Python: '/opt/conda/bin/python'
julia> pyimport("ssl")
Python: <module 'ssl' from '/opt/conda/lib/python3.10/ssl.py'>
My system
- Docker: micromamba 1.5.10 (Ubuntu)
- Julia 1.10.5, Python 3.10, PythonCall 0.9.23, OpenSSL 1.4.3
julia> versioninfo()
Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (aarch64-linux-gnu)
CPU: 2 × unknown
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-15.0.7 (ORCJIT, generic)
Threads: 1 default, 0 interactive, 1 GC (on 2 virtual cores)
Environment:
JULIA_REVISE = on
JULIA_FILE = julia-1.10.5-linux-x86_64.tar.gz
JULIA_CONDAPKG_BACKEND = MicroMamba
JULIA_PYTHONCALL_EXE = /opt/conda/bin/python
JULIA_CC = /opt/conda/bin/g++
JULIA_DEPOT_PATH = /home/mambauser/.julia
(@v1.10) pkg> st
Status `~/.julia/environments/v1.10/Project.toml`
[4d8831e6] OpenSSL v1.4.3
[6099a3de] PythonCall v0.9.23
(@v1.10) pkg> conda st
CondaPkg Status /home/mambauser/.julia/environments/v1.10/CondaPkg.toml
Using the Null backend (dependencies shown here are not being managed)
Environment
Packages
pandas
Affects: PythonCall
Describe the bug
When both OpenSSL and PythonCall are loaded
pyimport("ssl")fails if an external python executable is used.Obviously, the python import tries to load Julia's OpenSSL cryptolibrary although the calling python executable is correctly set.
A workaround is to import the ssl module before loading OpenSSL. However, I am not sure whether Julia's OpenSSL will function properly.
Interestingly, I didn't succeed in using the CondaPkg's python version:
My system