Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pyimport not working on NixOS #909

Open
eduardosm opened this issue Jun 10, 2021 · 1 comment
Open

pyimport not working on NixOS #909

eduardosm opened this issue Jun 10, 2021 · 1 comment

Comments

@eduardosm
Copy link

eduardosm commented Jun 10, 2021

PyCall.pyimport("matplotlib") produces:

ERROR: PyError (PyImport_ImportModule

The Python package matplotlib could not be imported 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:

/nix/store/58zz1ci0b4y6r6ypsl3ggz8fkqjl805f-python3-3.8.9-env/bin/python3.8

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 that 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'")

But running /nix/store/58zz1ci0b4y6r6ypsl3ggz8fkqjl805f-python3-3.8.9-env/bin/python3.8 -c "import matplotlib" does not fail, so the interpreter is actually able to find the requested module.

Using PyCall v1.92.3

@mauro3
Copy link

mauro3 commented Jun 28, 2021

This maybe related to JuliaLang/julia#40585. See work-around in JuliaLang/julia#40585 (comment).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants