#python #matplotlib #error-handling #package #julia
#питон #matplotlib #обработка ошибок #упаковка #джулия
Вопрос:
Я новичок в Julia. Я пытаюсь импортировать «PyPlot» с помощью
using PyPlot
но он всегда возвращает следующую ошибку:
[ Info: Precompiling PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee]
ERROR: LoadError: LoadError: PyCall not properly installed. Please run Pkg.build
("PyCall")
Stacktrace:
[1] error(::String) at .error.jl:33
[2] top-level scope at C:UsersCarlos.juliapackagesPyCallBcTLpsrcstartup
.jl:44
[3] include(::Function, ::Module, ::String) at .Base.jl:380
[4] include at .Base.jl:368 [inlined]
[5] include(::String) at C:UsersCarlos.juliapackagesPyCallBcTLpsrcPyCal
l.jl:1
[6] top-level scope at C:UsersCarlos.juliapackagesPyCallBcTLpsrcPyCall.
jl:38
[7] include(::Function, ::Module, ::String) at .Base.jl:380
[8] include(::Module, ::String) at .Base.jl:368
[9] top-level scope at none:2
[10] eval at .boot.jl:331 [inlined]
[11] eval(::Expr) at .client.jl:467
[12] top-level scope at .none:3
in expression starting at C:UsersCarlos.juliapackagesPyCallBcTLpsrcstart
up.jl:41
in expression starting at C:UsersCarlos.juliapackagesPyCallBcTLpsrcPyCal
l.jl:38
ERROR: LoadError: Failed to precompile PyCall [438e738f-606a-5dbb-bf0a-cddfbfd45
ab0] to C:UsersCarlos.juliacompiledv1.5PyCallGkzkC_NvSXt.ji.
Stacktrace:
[1] error(::String) at .error.jl:33
[2] compilecache(::Base.PkgId, ::String) at .loading.jl:1290
[3] _require(::Base.PkgId) at .loading.jl:1030
[4] require(::Base.PkgId) at .loading.jl:928
[5] require(::Module, ::Symbol) at .loading.jl:923
[6] include(::Function, ::Module, ::String) at .Base.jl:380
[7] include(::Module, ::String) at .Base.jl:368
[8] top-level scope at none:2
[9] eval at .boot.jl:331 [inlined]
[10] eval(::Expr) at .client.jl:467
[11] top-level scope at .none:3
in expression starting at C:UsersCarlos.juliapackagesPyPlotXHEG0srcPyPlo
t.jl:4
ERROR: Failed to precompile PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee] to C:
UsersCarlos.juliacompiledv1.5PyPlotoatAj_NvSXt.ji.
Stacktrace:
[1] error(::String) at .error.jl:33
[2] compilecache(::Base.PkgId, ::String) at .loading.jl:1290
[3] _require(::Base.PkgId) at .loading.jl:1030
[4] require(::Base.PkgId) at .loading.jl:928
[5] require(::Module, ::Symbol) at .loading.jl:923
Когда я использую Pkg.build("PyCall")
, я получаю следующую ошибку:
julia> Pkg.build("PyCall")
Building Conda ─→ `C:UsersCarlos.juliapackagesCondax5ml4depsbuild.log
`
Building PyCall → `C:UsersCarlos.juliapackagesPyCallBcTLpdepsbuild.lo
g`
┌ Error: Error building `PyCall`:
│ ┌ Info: Using the Python distribution in the Conda package by default.
│ └ To use a different Python version, set ENV["PYTHON"]="pythoncommand" and re-
run Pkg.build("PyCall").
│ [ Info: Downloading miniconda installer ...
│ ERROR: LoadError: failed process: Process(`'C:WindowsSystem32WindowsPowerSh
ellv1.0powershell.exe' -Version 3 -NoProfile -Command "[System.Net.ServicePoin
tManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; (New-Obj
ect System.Net.Webclient).DownloadFile('https://repo.continuum.io/miniconda/Mini
conda3-latest-Windows-x86_64.exe', 'C:UsersCarlos.juliaconda3installer.exe
')"`, ProcessExited(3221225477)) [3221225477]
│
│ Stacktrace:
│ [1] pipeline_error at .process.jl:525 [inlined]
│ [2] download_powershell(::String, ::String) at .download.jl:20
│ [3] download at .download.jl:64 [inlined]
│ [4] _install_conda(::String, ::Bool) at C:UsersCarlos.juliapackagesConda
x5ml4srcConda.jl:166
│ [5] _install_conda(::String) at C:UsersCarlos.juliapackagesCondax5ml4s
rcConda.jl:157
│ [6] runconda(::Cmd, ::String) at C:UsersCarlos.juliapackagesCondax5ml4
srcConda.jl:114
│ [7] add(::String, ::String; channel::String) at C:UsersCarlos.juliapackag
esCondax5ml4srcConda.jl:190
│ [8] add at C:UsersCarlos.juliapackagesCondax5ml4srcConda.jl:189 [inli
ned] (repeats 2 times)
│ [9] top-level scope at C:UsersCarlos.juliapackagesPyCallBcTLpdepsbuil
d.jl:84
│ [10] include(::String) at .client.jl:457
│ [11] top-level scope at none:5
│ in expression starting at C:UsersCarlos.juliapackagesPyCallBcTLpdepsbu
ild.jl:43
└ @ Pkg.Operations D:buildbotworkerpackage_win64buildusrsharejuliastdlib
v1.5PkgsrcOperations.jl:942
Я пробовал несколько разных решений, которые я нашел на разных форумах, включая StackOverflow, но решения, похоже, не работают в моем конкретном случае. Кажется, это не имеет ничего общего с проблемами антивируса / брандмауэра.
Кроме того, проблема связана именно с PyCall, а не с PyPlot.
Кто-нибудь знает, что здесь делать?
Спасибо.
Комментарии:
1. Что происходит, когда вы следуете первой рекомендации в сообщении об ошибке и запускаете
Pkg.build("PyCall")
? (это также требуетсяusing Pkg
).2. @Przemyslaw Szufel Done. Я отредактировал свой вопрос с выводом
Pkg.build("PyCall")
, который также выдает ошибку.
Ответ №1:
Проблема на самом деле возникает в Conda.jl, который используется PyCall для установки дистрибутива Python. В частности, команде загрузки не удается получить установщик miniconda. Вы можете попробовать запустить
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Version 3 -NoProfile -Command "[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; (New-Object System.Net.Webclient).DownloadFile('https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe', 'C:UsersCarlos.juliaconda3installer.exe')"
вручную в вашем терминале, чтобы посмотреть, сможете ли вы воспроизвести проблему. (Если загрузка не выполняется, наиболее распространенным источником трудностей является брандмауэр.)
В качестве обходного пути вы можете самостоятельно установить Python Matplotlib (например, загрузить и установить Anaconda Python) и настроить PyCall на использование этого, а не устанавливать собственный дистрибутив Python.
Комментарии:
1. Ошибка 3221225477 является ошибкой нарушения доступа. Следовательно, это означает, что powershell.exe давит очень некрасиво. Трудно сказать, что может помочь — может быть проблема с файловой системой, драйверами или, возможно, центр обновления Windows может помочь.
2. Может быть, у вас почему-то нет разрешения на запись
C:UsersCarlos.juliaconda3
?3. Это может быть проблемой, потому что у Julia 1.5.3 есть ошибка с разрешениями в WIndows (в некоторых случаях вам нужно установить разрешения вручную). Однако, насколько я знаю, эта ошибка связана с ошибкой доступа к оперативной памяти.