JuliaPy / PyPlot.jl

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

Can not install PyPlot.jl #423

Open brioglade opened 5 years ago

brioglade commented 5 years ago
julia> import PyPlot
ERROR: InitError: PyError (PyImport_ImportModule

The Python package matplotlib could not be found by pyimport. Usually this means
that you did not install matplotlib in the Python version being used by PyCall.

PyCall is currently configured to use the Python version at:

C:/Users/chang/.julia/conda/3/python.exe

and you should use whatever mechanism you usually use (apt-get, pip, conda,
etcetera) to install the Python package containing the matplotlib module.

One alternative is to re-configure PyCall to use a different Python
version on your system: set ENV["PYTHON"] to the path/name of the python
executable you want to use, run Pkg.build("PyCall"), and re-launch Julia.

Another alternative is to configure PyCall to use a Julia-specific Python
distribution via the Conda.jl package (which installs a private Anaconda
Python distribution), which has the advantage that packages can be installed
and kept up-to-date via Julia.  As explained in the PyCall documentation,
set ENV["PYTHON"]="", run Pkg.build("PyCall"), and re-launch Julia. Then,
To install the matplotlib module, you can use `pyimport_conda("matplotlib", PKG)`,
where PKG is the Anaconda package the contains the module matplotlib,
or alternatively you can use the Conda package directly (via
`using Conda` followed by `Conda.add` etcetera).

) <class 'ModuleNotFoundError'>
ModuleNotFoundError("No module named 'matplotlib'",)

Stacktrace:
 [1] pyimport(::String) at C:\Users\chang\.julia\packages\PyCall\0jMpb\src\PyCall.jl:486
 [2] pyimport_conda(::String, ::String, ::String) at C:\Users\chang\.julia\packages\PyCall\0jMpb\src\PyCall.jl:650
 [3] pyimport_conda at C:\Users\chang\.julia\packages\PyCall\0jMpb\src\PyCall.jl:649 [inlined]
 [4] __init__() at C:\Users\chang\.julia\packages\PyPlot\mQXSC\src\init.jl:174
 [5] _include_from_serialized(::String, ::Array{Any,1}) at .\loading.jl:630
 [6] macro expansion at .\logging.jl:312 [inlined]
 [7] _require_search_from_serialized(::Base.PkgId, ::String) at .\loading.jl:701
 [8] _require(::Base.PkgId) at .\loading.jl:934
 [9] require(::Base.PkgId) at .\loading.jl:855
 [10] macro expansion at .\logging.jl:311 [inlined]
 [11] require(::Module, ::Symbol) at .\loading.jl:837
during initialization of module PyPlot
stevengj commented 5 years ago

As the error message says, you don't have the Python matplotlib module installed.

Matplotlib is installed automatically if you have configured PyCall to use its own Conda installation (the default on Windows), but I'm guessing you've configured it to use your own Python installation that is missing matplotlib. What is the value of PyPlot.PyCall.python?

aibnus commented 4 years ago

I had the same issue. This is the value when I call PyPlot.PyCall.python

ERROR: UndefVarError: Pyplot not defined