pythongraalvmgraalpython

In graalpython what is difference between `ginstall` and `pip`?


In graalpython https://www.graalvm.org/python/ what is difference between ginstall and pip? Which one to use?


Solution

  • These days pip is the recommended way to install packages in GraalPy (formerly GraalPython).

    The pip bundled in GraalPy prefers versions of packages that are known to work on GraalPy, but honors the user specified version, i.e., pip install x will install version of x known to work with GraalPy. pip install x=1.2.3 will just install version 1.2.3 no matter if it is known to work with GraalPy (it may still work, but we haven't tested it). On top of that the GraalPy pip patches some well known packages to be more compatible with GraalPy.


    Old answer applicable to older versions of GraalPython:

    Unlike pip, ginstall installs package versions that are known to be (mostly) compatible with GraalPython and always runs setup.py to install the package from sources.

    Both pip and ginstall apply GraalPython specific patches for some packages. This application of the patches is in pip achieved by monkey patching its internals, so it may not work with never versions of pip.

    TL;DR: I would use ginstall first. If it does not support the package you want, I'd use pip. Also, avoid upgrading the bundled pip if possible.

    Historically, another reason for the existence of ginstall was that GraalPython did not support SSL, which pip needs unless you use custom mirror. This not the case anymore.