Installing packages from PyPI

Pyodide has experimental support for installing pure Python wheels from PyPI.

IMPORTANT: Since the packages hosted at files.pythonhosted.org don’t support CORS requests, we use a CORS proxy at cors-anywhere.herokuapp.com to get package contents. This makes a man-in-the-middle attack on the package contents possible. However, this threat is minimized by the fact that the integrity of each package is checked using a hash obtained directly from pypi.org. We hope to have this improved in the future, but for now, understand the risks and don’t use any sensitive data with the packages installed using this method.

For use in Iodide:

%% py
import micropip
micropip.install('snowballstemmer')

# Iodide implicitly waits for the promise to resolve when the packages have finished
# installing...

%% py
import snowballstemmer
stemmer = snowballstemmer.stemmer('english')
stemmer.stemWords('go goes going gone'.split())

For use outside of Iodide (just Python), you can use the then method on the Promise that micropip.install returns to do work once the packages have finished loading:

def do_work(*args):
  import snowballstemmer
  stemmer = snowballstemmer.stemmer('english')
  stemmer.stemWords('go goes going gone'.split())

import micropip
micropip.install('snowballstemmer').then(do_work)