Предупреждение: PyPlot использует бэкэнд tkagg, который, как известно, вызывает сбои в MacOS - PullRequest
1 голос
/ 30 октября 2019

Кто-нибудь знает, как изменить backend из PyPlot с "TkAgg" на Qt5Agg в Юлии?

Я получил это предупреждение, когда я пытаюсь Using PyPlot в Юлии:

julia> using PyPlot
[ Info: Recompiling stale cache file /Users/tonyspc/.julia/compiled/v1.2/PyPlot/oatAj.ji for PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee]
┌ Warning: PyPlot is using tkagg backend, which is known to cause crashes on MacOS (#410); use the MPLBACKEND environment variable to request a different backend.
└ @ PyPlot ~/.julia/packages/PyPlot/4wzW1/src/init.jl:192

Я пытался использовать решение, опубликованное здесь: https://github.com/JuliaPy/PyPlot.jl/issues/454

Но оно не удалось:

julia> using PyCall
[ Info: Recompiling stale cache file /Users/tonyspc/.julia/compiled/v1.2/PyCall/GkzkC.ji for PyCall [438e738f-606a-5dbb-bf0a-cddfbfd45ab0]

julia> pyimport_conda("PyQt5", "pyqt")
ERROR: PyError (PyImport_ImportModule

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

PyCall is currently configured to use the Python version at:

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

and you should use whatever mechanism you usually use (apt-get, pip, conda,
etcetera) to install the Python package containing the PyQt5 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 PyQt5 module, you can use `pyimport_conda("PyQt5", PKG)`,
where PKG is the Anaconda package the contains the module PyQt5,
or alternatively you can use the Conda package directly (via
`using Conda` followed by `Conda.add` etcetera).

) <type 'exceptions.ImportError'>
ImportError('No module named PyQt5',)

Stacktrace:
 [1] pyimport(::String) at /Users/tonyspc/.julia/packages/PyCall/ttONZ/src/PyCall.jl:544
 [2] pyimport_conda(::String, ::String, ::String) at /Users/tonyspc/.julia/packages/PyCall/ttONZ/src/PyCall.jl:702
 [3] pyimport_conda(::String, ::String) at /Users/tonyspc/.julia/packages/PyCall/ttONZ/src/PyCall.jl:701
 [4] top-level scope at REPL[4]:1

Однако я уже установил PyQt5, используя brew install pyqt

И я не знаю, почему мой matplot library расположен в каталоге python2, а не в каталоге python3:

julia> pyimport("matplotlib").matplotlib_fname()
"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/mpl-data/matplotlibrc"

У меня есть python2, который поставляется по умолчанию на моемMac и установлен python3 с использованием Homebrew

MacBook-Pro:~ tonyspc$ which python3
/usr/local/bin/python3
MacBook-Pro:~ tonyspc$ which python
/usr/bin/python

Должен ли я установить ENV["PYTHON"] на "/usr/local/bin/python3"?

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

У меня была похожая проблема, и я добавлял ее в мой .bashrc для запуска каждый раз:

export MPLBACKEND=qt5agg

Затем после выполнения ]build PyCall PyPlot и перезапуска Джулии, казалось,чтобы найти правильный бэкэнд для заговора.

Мой соответствующий вопрос я открыл (и получил ответ): https://github.com/JuliaPy/PyPlot.jl/issues/453#issuecomment-527163934

0 голосов
/ 30 октября 2019

Попробуйте установить ENV["PYTHON"] = "/usr/local/bin/python3" в новом REPL, а затем pkg> build PyCall PyPlot. Это должно заставить PyCall (и, следовательно, также PyPlot) использовать ваш локальный Python 3.

...