Can't build PythonCall

Hi,

Julia 1.11.6:

julia> import Pkg

julia> Pkg.build("PythonCall")
Precompiling project...
  āœ— PythonPlot
  0 dependencies successfully precompiled in 4 seconds. 482 already precompiled.
  1 dependency errored.
  For a report of the errors see `julia> err`. To retry use `pkg> precompile`

julia> err
PkgPrecompileError: The following 1 direct dependency failed to precompile:

PythonPlot 

Failed to precompile PythonPlot [274fc56d-3b97-40fa-a1cd-1b4a50311bf9] to "/home/jska/.julia/compiled/v1.11/PythonPlot/jl_KInpeI".
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python'
  isolated = 0
  environment = 1
  user site = 1
  safe_path = 0
  import site = 1
  is in build tree = 0
  stdlib dir = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.12'
  sys._base_executable = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python'
  sys.base_prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.base_exec_prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.platlibdir = 'lib'
  sys.executable = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python'
  sys.prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.exec_prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.path = [
    '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python312.zip',
    '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.12',
    '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.12/lib-dynload',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
LookupError: no codec search functions registered: can't find encoding

Current thread 0x00007f07fcc92740 (most recent call first):
  <no Python frame>
ERROR: LoadError: InitError: failed process: Process(setenv(`/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python /home/jska/.julia/packages/PythonCall/avYrV/src/C/find_libpython.py --list-all`,["PYTHONIOENCODING=UTF-8", "PATH=/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin:/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/condabin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/julia-1.9.0/bin", "QT_ACCESSIBILITY=1", "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5077/bus", "XDG_CURRENT_DESKTOP=XFCE", "LANG=en_US.UTF8", "LOGNAME=jska", "XDG_SESSION_DESKTOP=xfce", "SHLVL=1", "XDG_RUNTIME_DIR=/run/user/5077"  …  "XMODIFIERS=@im=ibus", "JULIA_LOAD_PATH=/home/jska/.julia/environments/v1.11/Project.toml:/opt/jska-tmp/julia-1.11.6/share/julia/stdlib/v1.11", "CONDA_SHLVL=1", "HOME=/home/jska", "TERM=xterm-256color", "WINDOWPATH=2", "LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.swp=00;90:*.tmp=00;90:*.dpkg-dist=00;90:*.dpkg-old=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:", "COLORTERM=truecolor", "OPENBLAS_MAIN_FREE=1", "VTE_VERSION=7006"]), ProcessExited(1)) [1]

Stacktrace:
  [1] pipeline_error
    @ ./process.jl:598 [inlined]
  [2] (::Base.var"#890#891"{Base.Process})()
    @ Base ./process.jl:356
  [3] iterate (repeats 2 times)
    @ ./io.jl:1235
  [4] _collect
    @ ./array.jl:727
  [5] collect
    @ ./array.jl:716 [inlined]
  [6] readlines
    @ ./io.jl:708 [inlined]
  [7] init_context()
    @ PythonCall.C ~/.julia/packages/PythonCall/avYrV/src/C/context.jl:117
  [8] __init__()
    @ PythonCall.C ~/.julia/packages/PythonCall/avYrV/src/C/C.jl:23
  [9] run_module_init(mod::Module, i::Int64)
    @ Base ./loading.jl:1378
 [10] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
    @ Base ./loading.jl:1366
 [11] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
    @ Base ./loading.jl:1254
 [12] _include_from_serialized (repeats 2 times)
    @ ./loading.jl:1210 [inlined]
 [13] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
    @ Base ./loading.jl:2057
 [14] _require(pkg::Base.PkgId, env::String)
    @ Base ./loading.jl:2527
 [15] __require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2388
 [16] #invoke_in_world#3
    @ ./essentials.jl:1089 [inlined]
 [17] invoke_in_world
    @ ./essentials.jl:1086 [inlined]
 [18] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2375
 [19] macro expansion
    @ ./loading.jl:2314 [inlined]
 [20] macro expansion
    @ ./lock.jl:273 [inlined]
 [21] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2271
 [22] #invoke_in_world#3
    @ ./essentials.jl:1089 [inlined]
 [23] invoke_in_world
    @ ./essentials.jl:1086 [inlined]
 [24] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2260
 [25] include
    @ ./Base.jl:562 [inlined]
 [26] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
    @ Base ./loading.jl:2881
 [27] top-level scope
    @ stdin:6
during initialization of module C
in expression starting at /home/jska/.julia/packages/PythonPlot/oS8x4/src/PythonPlot.jl:2
in expression starting at stdin:

that seems to be something else, can you try in an environment without PythonPlot?

1 Like

How can I do that ?

Looks like I was able to:

(@v1.11) pkg> rm PythonPlot
    Updating `~/.julia/environments/v1.11/Project.toml`
  [274fc56d] - PythonPlot v1.0.6
    Updating `~/.julia/environments/v1.11/Manifest.toml`
  [274fc56d] - PythonPlot v1.0.6

(@v1.11) pkg> rm PythonPlot
ERROR: The following package names could not be resolved:
 * PythonPlot (not found in project or manifest)
   Suggestions: PyPlot PythonCall

(@v1.11) pkg> add PythonCall
   Resolving package versions...
  No Changes to `~/.julia/environments/v1.11/Project.toml`
  No Changes to `~/.julia/environments/v1.11/Manifest.toml`

But I still have an error:

julia> using PythonCall
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python'
  isolated = 0
  environment = 1
  user site = 1
  safe_path = 0
  import site = 1
  is in build tree = 0
  stdlib dir = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.12'
  sys._base_executable = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python'
  sys.base_prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.base_exec_prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.platlibdir = 'lib'
  sys.executable = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python'
  sys.prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.exec_prefix = '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default'
  sys.path = [
    '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python312.zip',
    '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.12',
    '/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.12/lib-dynload',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
LookupError: no codec search functions registered: can't find encoding

Current thread 0x00007fd308fff740 (most recent call first):
  <no Python frame>
ERROR: InitError: failed process: Process(setenv(`/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python /home/jska/.julia/packages/PythonCall/avYrV/src/C/find_libpython.py --list-all`,["PYTHONIOENCODING=UTF-8", "PATH=/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin:/home/jska/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/condabin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/julia-1.9.0/bin", "QT_ACCESSIBILITY=1", "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5077/bus", "XDG_CURRENT_DESKTOP=XFCE", "LANG=en_US.UTF8", "LOGNAME=jska", "XDG_SESSION_DESKTOP=xfce", "SHLVL=1", "XDG_RUNTIME_DIR=/run/user/5077"  …  "SESSION_MANAGER=local/sirius:@/tmp/.ICE-unix/1676,unix/sirius:/tmp/.ICE-unix/1676", "XMODIFIERS=@im=ibus", "CONDA_SHLVL=1", "HOME=/home/jska", "TERM=xterm-256color", "WINDOWPATH=2", "LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.swp=00;90:*.tmp=00;90:*.dpkg-dist=00;90:*.dpkg-old=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:", "COLORTERM=truecolor", "OPENBLAS_MAIN_FREE=1", "VTE_VERSION=7006"]), ProcessExited(1)) [1]

Stacktrace:
  [1] pipeline_error
    @ ./process.jl:598 [inlined]
  [2] (::Base.var"#890#891"{Base.Process})()
    @ Base ./process.jl:356
  [3] iterate (repeats 2 times)
    @ ./io.jl:1235
  [4] _collect
    @ ./array.jl:727
  [5] collect
    @ ./array.jl:716 [inlined]
  [6] readlines
    @ ./io.jl:708 [inlined]
  [7] init_context()
    @ PythonCall.C ~/.julia/packages/PythonCall/avYrV/src/C/context.jl:117
  [8] __init__()
    @ PythonCall.C ~/.julia/packages/PythonCall/avYrV/src/C/C.jl:23
  [9] run_module_init(mod::Module, i::Int64)
    @ Base ./loading.jl:1378
 [10] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
    @ Base ./loading.jl:1366
 [11] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
    @ Base ./loading.jl:1254
 [12] _include_from_serialized (repeats 2 times)
    @ ./loading.jl:1210 [inlined]
 [13] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
    @ Base ./loading.jl:2057
 [14] _require(pkg::Base.PkgId, env::String)
    @ Base ./loading.jl:2527
 [15] __require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2388
 [16] #invoke_in_world#3
    @ ./essentials.jl:1089 [inlined]
 [17] invoke_in_world
    @ ./essentials.jl:1086 [inlined]
 [18] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2375
 [19] macro expansion
    @ ./loading.jl:2314 [inlined]
 [20] macro expansion
    @ ./lock.jl:273 [inlined]
 [21] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2271
 [22] #invoke_in_world#3
    @ ./essentials.jl:1089 [inlined]
 [23] invoke_in_world
    @ ./essentials.jl:1086 [inlined]
 [24] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2260
during initialization of module C

Ok, I forgot to build, now it seems to work:

julia> import Pkg

julia> Pkg.build("PythonCall")

julia> import Pkg

julia> using PythonCall

julia>

Thanks !