Skip to content

Matplotlib backend not specified by default in Windows machines [Python: Julia: UndefVarError: Core not defined in PythonCall.Compat] #676

Closed

Description

@BoundaryValueProblems

I just updated PythonCall.jl to v0.9.28 and Julia to v1.11.7 on my Window 11 machine. With the previous versions, i.e., v0.9.27 and v1.11.6, respectively, I didn't have to set up the backend of matplotlib.pyplot explicitly. However, with the current new versions, the backend is not specified by default, and got the following error. I don't have any problems on my iMac. Only under Windows, I encountered this problem. What's wrong here?

julia> using PythonCall

julia> plt=pyimport("matplotlib.pyplot")
Python: <module 'matplotlib.pyplot' from 'C:\\Users\\xxx\\.julia\\environments\\v1.11\\.CondaPkg\\.pixi\\envs\\default\\Lib\\site-packages\\matplotlib\\pyplot.py'>

julia> plt.get_backend()
ERROR: Python: Julia: UndefVarError: `Core` not defined in `PythonCall.Compat`
Hint: It looks like two or more modules export different bindings with this name, resulting in ambiguity. Try explicitly importing it from a particular module, or qualifying the name with the module it should come from.
Hint: a global variable of this name also exists in Core.
Stacktrace:
  [1] (::PythonCall.Compat.var"#1#2")()
    @ PythonCall.Compat C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Compat\gui.jl:162
  [2] pyjlany_call(self::PythonCall.Compat.var"#1#2", args_::Py, kwargs_::Py)
    @ PythonCall.JlWrap C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\JlWrap\any.jl:49 
  [3] _pyjl_callmethod(f::Any, self_::Ptr{PythonCall.C.PyObject}, args_::Ptr{PythonCall.C.PyObject}, nargs::Int64)
    @ PythonCall.JlWrap C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\JlWrap\base.jl:71
  [4] _pyjl_callmethod(o::Ptr{PythonCall.C.PyObject}, args::Ptr{PythonCall.C.PyObject})      
    @ PythonCall.JlWrap.Cjl C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\JlWrap\C.jl:63
  [5] PyObject_CallObject
    @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\C\pointers.jl:300 [inlined]        
  [6] macro expansion
    @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\Py.jl:118 [inlined]
  [7] pycallargs(f::Py)
    @ PythonCall.Core C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\builtins.jl:193
  [8] #pycall#21
    @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\builtins.jl:217 [inlined]     
  [9] pycall
    @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\builtins.jl:203 [inlined]     
 [10] (::Py)()
    @ PythonCall.Core C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\Py.jl:334     
 [11] top-level scope
    @ REPL[3]:1
 [12] eval
    @ .\boot.jl:430 [inlined]
 [13] eval
    @ .\Base.jl:130 [inlined]
 [14] repleval(m::Module, code::Expr, ::String)
    @ VSCodeServer c:\Users\xxx\.vscode\extensions\julialang.language-julia-1.149.2\scripts\packages\VSCodeServer\src\repl.jl:229
 [15] #112
    @ c:\Users\xxx\.vscode\extensions\julialang.language-julia-1.149.2\scripts\packages\VSCodeServer\src\repl.jl:192 [inlined]
 [16] with_logstate(f::VSCodeServer.var"#112#114"{…}, logstate::Base.CoreLogging.LogState)   
    @ Base.CoreLogging .\logging\logging.jl:524
 [17] with_logger
    @ .\logging\logging.jl:635 [inlined]
 [18] (::VSCodeServer.var"#111#113"{Module, Expr, REPL.LineEditREPL, REPL.LineEdit.Prompt})()
    @ VSCodeServer c:\Users\xxx\.vscode\extensions\julialang.language-julia-1.149.2\scripts\packages\VSCodeServer\src\repl.jl:193
 [19] #invokelatest#2
    @ .\essentials.jl:1055 [inlined]
 [20] invokelatest(::Any)
    @ Base .\essentials.jl:1052
 [21] (::VSCodeServer.var"#64#65")()
    @ VSCodeServer c:\Users\xxx\.vscode\extensions\julialang.language-julia-1.149.2\scripts\packages\VSCodeServer\src\eval.jl:34
Python stacktrace:
 [1] __call__
   @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\JlWrap\any.jl:262
 [2] find_module
   @ <string>:9
 [3] _find_spec_legacy
   @ <frozen importlib._bootstrap>:1050
 [4] _find_spec
   @ <frozen importlib._bootstrap>:1076
 [5] _find_and_load_unlocked
   @ <frozen importlib._bootstrap>:1140
 [6] _find_and_load
   @ <frozen importlib._bootstrap>:1178
 [7] _setup_pyqt5plus
   @ C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\backends\qt_compat.py:79
 [8] <module>
   @ C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\backends\qt_compat.py:125
 [9] <module>
   @ C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\backends\backend_qtagg.py:9
 [10] _call_with_frames_removed
   @ <frozen importlib._bootstrap>:241
 [11] exec_module
   @ <frozen importlib._bootstrap_external>:940
 [12] _load_unlocked
   @ <frozen importlib._bootstrap>:690
 [13] _find_and_load_unlocked
   @ <frozen importlib._bootstrap>:1149
 [14] _find_and_load
   @ <frozen importlib._bootstrap>:1178
 [15] _gcd_import
   @ <frozen importlib._bootstrap>:1206
 [16] import_module
   @ importlib C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\importlib\__init__.py:126
 [17] load_backend_module
   @ matplotlib.backends.registry C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\backends\registry.py:323
 [18] switch_backend
   @ matplotlib.pyplot C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\pyplot.py:415
 [19] switch_backend
   @ matplotlib.pyplot C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\pyplot.py:400
 [20] __getitem__
   @ matplotlib C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\__init__.py:764
 [21] get_backend
   @ matplotlib C:\Users\xxx\.julia\environments\v1.11\.CondaPkg\.pixi\envs\default\Lib\site-packages\matplotlib\__init__.py:1281
Stacktrace:
 [1] pythrow()
   @ PythonCall.Core C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\err.jl:77      
 [2] errcheck
   @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\err.jl:10 [inlined]
 [3] pycallargs(f::Py)
   @ PythonCall.Core C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\builtins.jl:193
 [4] #pycall#21
   @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\builtins.jl:217 [inlined]      
 [5] pycall
   @ C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\builtins.jl:203 [inlined]      
 [6] (::Py)()
   @ PythonCall.Core C:\Users\xxx\.julia\packages\PythonCall\mkWc2\src\Core\Py.jl:334      
 [7] top-level scope
   @ REPL[3]:1
Some type information was truncated. Use `show(err)` to see complete types.

Activity

  1. self-assigned this
    on Sep 21, 2025
  2. added theissue type on Sep 21, 2025
  3. cjdoris commented on Sep 21, 2025

    @cjdoris
    Member

    Ah yeah that's a bug introduced by a recent refactor sorry. You'll have to downgrade until it's fixed. Thanks for the bug report.

  4. added a commit that references this issue on Oct 8, 2025
    5901dea
  5. added a commit that references this issue on Oct 9, 2025
    5f8f8f7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

questionFurther information is requested

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions