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

How to correcty install and use JyNI with numpy support on Jython? #39

Open
Daniel-Alievsky opened this issue Apr 21, 2022 · 2 comments

Comments

@Daniel-Alievsky
Copy link

Hello,

I don't understand well the sequence of steps to start usage of JyNI with numpy (Windows platform). I already created an issue on Jython site:
https://bugs.jython.org/issue2930
But I'm not sure that it is a correct place, maybe it is question to you.

I read your paper https://arxiv.org/pdf/1607.00825v1.pdf and tried to reproduce the simplest example:

import sys
sys.path.append(’path_to_numpy1.12_pre-release’)
import numpy as np
a = np.array([2, 5, 7])
...

But what is here the 'path_to_numpy1.12'? Where should I place the content of your archive JyNI-2.7-alpha.5-bin-win-amd64.zip ? Now I just unpacked it and placed both files into C:\JyNI , then added this directory to sys.path.append. But it seems that it is not a right way. Results are the following:

Traceback (most recent call last):
File "C:/siams/computer-vision/stare-python/jython-experiments/net/algart/jython/tests/SimpleJythonNumpyTest.py", line 3, in
import numpy as np
File "C:\jython2.7.2\Lib\site-packages\numpy_init_.py", line 142, in
from . import core
File "C:\jython2.7.2\Lib\site-packages\numpy\core_init_.py", line 71, in
raise ImportError(msg)
ImportError:

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
Here is how to proceed:

  • If you're working with a numpy git repository, try git clean -xdf
    (removes all files not under version control) and rebuild numpy.
  • If you are simply trying to use the numpy version that you have installed:
    your installation is broken - please reinstall numpy.
  • If you have already reinstalled and that did not fix the problem, then:
    1. Check that you are using the Python you expect (you're using C:\jython2.7.2\bin\jython.exe),
      and that you have no directories in your PATH or PYTHONPATH that can
      interfere with the Python and numpy versions you're trying to use.

    2. If (1) looks fine, you can open a new issue at
      https://github.com/numpy/numpy/issues. Please include details on:

      • how you installed Python
      • how you installed numpy
      • your operating system
      • whether or not you have multiple versions of Python installed
      • if you built from source, your compiler versions and ideally a build log

      Note: this error has many possible causes, so please don't comment on
      an existing issue about this - open a new one instead.

Original error was: No module named _multiarray_umath

@Daniel-Alievsky
Copy link
Author

Daniel-Alievsky commented Apr 21, 2022

It seems that the previous problem was connected with too late version of Numpy: it was 1.16. As you recommend, I switched to Numpy 1.13.3. Jython currently cannot install numpy, but I found workaround: installed Python 2.7.9, installed their Numpy 1.13.3 and copied the folders numpy and numpy-1.13.3.dist-info from Python's directory site-packages into the same directory of Jython.

Now my test SimpleJythonNumpyTest.py consists of only 1 line:
import numpy as np
I call it via the following command:
java -cp C:\jython2.7.2\jython.jar;C:\JyNI\JyNI.jar org.python.util.jython SimpleJythonNumpyTest.py

Java version: "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode, sharing)

Numpy is successully imported, but the result is the system crash: see hs_err_pid8120.log
hs_err_pid8120.log

@Stewori
Copy link
Owner

Stewori commented Apr 22, 2022

Hello Daniel, thank you for your interest in JyNI. However, if your goal is to do data-science beyond some numpy-numerics, Jython+JyNI is probably not sufficient. Already SciPy does not work and NumPy only works for a narrow set of versions and somewhat limited functionality. That JyNI is experimental is indicated by the "alpha" in the version name.

copied the folders numpy and numpy-1.13.3.dist-info from Python's directory site-packages into the same directory of Jython.

Yes, that is much how I used to do it. Using CPython 2.7 pip to install NumPy and dependencies is my recommended way. Then simply add the path to Jython's library path (sys.path.append(...)). No need to copy things around. E.g. from my setup:

sys.path.append('C:/Program Files/Python/Python2.7.13/Lib/site-packages')
sys.path.append('C:/Program Files/Python/Python2.7.13/DLLs')

Alternatively, one can build NumPy from source (in-place build!) (easy on Linux, difficult on Windows) and put that folder on the library path.

Anyway. There are plenty of reasons for broken config. Last but not least I never tested on recent Java (also because Jython itself used to have issues with recent Java). Easiest way to check out JyNI with NumPy is a stand-alone image I do not distribute publicly. Write to me at [email protected].

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