首页 > 解决方案 > Julia:未能将 PyCall 配置为使用不同的版本

问题描述

我想在我的 Julia 代码中使用一系列 Python 库。我一直在尝试使用 PyCall 访问我已经安装在我的(Windows)PC 上的 Python 库;但是,我无法重新配置 PyCall,使其远离 Julia 私有的默认 Python 发行版。按照文档中的步骤(https://github.com/JuliaPy/PyCall.jl),我在 Julia 中尝试了以下操作:

using Pkg

ENV["PYTHON"] = raw"C:\Users\catod\AppData\Local\Programs\Python\Python37-32\python.exe"

Pkg.build(PyCall)

退出并重新进入 Julia 后,我尝试运行

using PyCall

plt = pyimport("matplotlib.pyplot")

但收到以下错误消息:

ERROR: LoadError: PyError (PyImport_ImportModule

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

PyCall is currently configured to use the Julia-specific Python distribution
installed by the Conda.jl package.  To install the matplotlib.pyplot module, you can      
use `pyimport_conda("matplotlib.pyplot", PKG)`, where PKG is the Anaconda
package the contains the module matplotlib.pyplot, or alternatively you can use the
Conda package directly (via `using Conda` followed by `Conda.add` etcetera).

Alternatively, if you want to use a different Python distribution on your
system, such as a system-wide Python (as opposed to the Julia-specific Python),
you can re-configure PyCall with that Python.   As explained in the PyCall
documentation, set ENV["PYTHON"] to the path/name of the python executable
you want to use, run Pkg.build("PyCall"), and re-launch Julia.

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

谁能指出我哪里出错了?

标签: environment-variablesjuliapycall

解决方案


这里有两个问题:

  1. 您的 Python 安装中未安装 Matplotlib。您需要运行(但我绝对推荐 Anaconda - 请参阅最后的注释)

    pip install matplotlib
    
  2. 即使您设法安装matplolib您的代码,在您尝试第一个情节的地方也会非常难看的崩溃,因为不加载show就无法直接嵌入到 Julia中。因此,您的代码应该是:matlplotlibPyPlot

    using PyCall
    using PyPlot
    plt = pyimport("matplotlib.pyplot")
    

现在另一个问题是,通常PyPlot是通过 conda 安装它需要的所有包。由于您尝试使用普通的 Python,因此您需要手动安装这些包。

笔记

基本上,应该需要使用 Anaconda 来获得良好的 Julia-Python 体验,因为在这种情况下,有许多工具可以自动化集成。

使用 Julia 内置的 Python 是最简单的选择。我绝对推荐:

ENV["PYTHON"] = ""
pkg"build PyCall"
using Conda
Conda.add("matplotlib")

另一个相对简单的选择是 Anaconda。安装您自己的 Anaconda 并设置ENV["PYTHON"]它,build尽情享受吧。使用非 Anaconda Python 永远不会很好,因为您仍然无法使用它Conda.jl来管理安装。


推荐阅读