PyCall не может найти scipy в Юлии

В настоящее время я переписываю кучу кода Matlab в julia. Эти коды включают в себя множество математических функций и, в частности, функции интерполяции для трехмерной сетки. С этим легко справиться в Matlab: все, что мне нужно сделать, это использовать функцию interp3. Как только я не нашел простого способа сделать подобное в Julia, я пытаюсь использовать некоторые функции Scipy через PyCall. Теперь проблема: я уже установил PyCall, изменил ENV[PYTHON] на путь к моей собственной установленной анаконде. Не знаю, что, и я тщательно искал решения, я все еще получаю следующее сообщение об ошибке:

julia> pyimport("scipy")
ERROR: PyError (PyImport_ImportModule

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

PyCall is currently configured to use the Python version at:

/usr/bin/python3

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

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

Stacktrace:
 [1] pyimport(::String) at /home/gabriel/.julia/packages/PyCall/zqDXB/src/PyCall.jl:536
 [2] top-level scope at none:0

Кроме того, все, что я пробовал, я пробовал как на Windows 10, так и на Linux. Я больше не знаю, что делать! Буду очень признателен за помощь! Заранее спасибо!

См. также:  Ядро Python умирает на Jupyter Notebook с tenorflow 2

Является ли / usr / bin / python3 путем к вашему питону conda? Я подозреваю, что вы используете системную установку python по умолчанию, вам следует установить ENV [PYTHON] на значение конкретного conda env, в которое вы установили SciPy. Другой вариант — установить SciPy для общесистемного Python с помощью pip.   —  person Gabriel Neves    schedule 01.07.2020

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Gabriel Neves

    Установите scipy с Conda — интерфейсом Джулии к пакетам Python.

    using Conda
    Conda.add("scipy")
    

    теперь pyimport("scipy") будет работать как шарм.

    Обратите внимание, что с пользовательской установкой Python могут происходить разные вещи (и вы сами можете управлять этим), поэтому я рекомендую вам использовать Python, встроенный в Julia.

    Вот как вы переключаетесь на встроенный Python:

    using Pkg
    ENV["PYTHON"]=""
    Pkg.build("PyCall")
    

    Так просто! Уже пробовал что-то подобное, не знаю, что пошло не так. Ну что ж, теперь эта процедура заработала! Большое спасибо! person Gabriel Neves; 01.07.2020

  2. Gabriel Neves

    В моем случае все еще предпочтительнее указывать на пользовательское местоположение Python. Реконструкция pycall сработала для меня, так как https://github.com/JuliaPy/PyCall.jl/issues/569 говорит. И не забудьте перезапустить julia.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: