JuliaPy / PyPlot.jl

Plotting for Julia based on matplotlib.pyplot
https://github.com/JuliaPy/PyPlot.jl
MIT License
475 stars 87 forks source link

bubble up error on python > `import matplotlib` (e.g. bogus MPLBACKEND) #474

Open goretkin opened 4 years ago

goretkin commented 4 years ago
julia> ENV["MPLBACKEND"]="aaaaaaaaaagtk";  import PyPlot;
[ Info: Installing matplotlib via the Conda matplotlib package...
[ Info: Running `conda install -y matplotlib` in root environment
Collecting package metadata (current_repodata.json): done
Solving environment: done

# All requested packages already installed.

ERROR: InitError: PyCall.PyError("PyImport_ImportModule", PyCall.PyObject(Ptr{PyCall.PyObject_struct} @0x0000000135d73760), PyCall.PyObject(Ptr{PyCall.PyObject_struct} @0x000000013a353b30), PyCall.PyObject(Ptr{PyCall.PyObject_struct} @0x000000013a35eaf0))
Stacktrace:
 [1] pyimport(::String) at /Users/goretkin/.julia/packages/PyCall/zqDXB/src/PyCall.jl:536
 [2] pyimport_conda(::String, ::String, ::String) at /Users/goretkin/.julia/packages/PyCall/zqDXB/src/PyCall.jl:700
 [3] pyimport_conda at /Users/goretkin/.julia/packages/PyCall/zqDXB/src/PyCall.jl:693 [inlined]
 [4] __init__() at /Users/goretkin/.julia/packages/PyPlot/XHEG0/src/init.jl:179
 [5] _include_from_serialized(::String, ::Array{Any,1}) at ./loading.jl:692
 [6] _require_search_from_serialized(::Base.PkgId, ::String) at ./loading.jl:776
 [7] _require(::Base.PkgId) at ./loading.jl:1001
 [8] require(::Base.PkgId) at ./loading.jl:922
 [9] require(::Module, ::Symbol) at ./loading.jl:917
during initialization of module PyPlot

is different from

>>> import os; os.environ["MPLBACKEND"] = "aaaaaaagtk"
>>> import matplotlib
Traceback (most recent call last):
  File "/Users/goretkin/.julia/conda/3/lib/python3.7/site-packages/matplotlib/__init__.py", line 802, in __setitem__
    cval = self.validate[key](val)
  File "/Users/goretkin/.julia/conda/3/lib/python3.7/site-packages/matplotlib/rcsetup.py", line 266, in validate_backend
    else _validate_standard_backends(s))
  File "/Users/goretkin/.julia/conda/3/lib/python3.7/site-packages/matplotlib/rcsetup.py", line 64, in __call__
    % (self.key, s, list(self.valid.values())))
ValueError: Unrecognized backend string 'aaaaaaagtk': valid strings are ['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/goretkin/.julia/conda/3/lib/python3.7/site-packages/matplotlib/__init__.py", line 1317, in <module>
    rcParams['backend'] = os.environ.get('MPLBACKEND')
  File "/Users/goretkin/.julia/conda/3/lib/python3.7/site-packages/matplotlib/__init__.py", line 804, in __setitem__
    raise ValueError("Key %s: %s" % (key, str(ve)))
ValueError: Key backend: Unrecognized backend string 'aaaaaaagtk': valid strings are ['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']
>>>

Seems also to be unnecessarily doing something with conda.