Pyodide is a Python distribution for the browser and Node.js based on WebAssembly
Go to file
Michael Droettboom 89fcd32a20
Apply suggestions from code review
Co-Authored-By: jstafford <jason.stafford@scrycollective.com>
2019-02-07 13:15:40 -08:00
.circleci Update build cache version 2019-01-17 08:27:12 -05:00
CLAPACK Use -Os and small INLINING_LIMIT for files liked with LAPACK 2018-11-15 13:24:27 +01:00
benchmark Lint 2018-11-15 13:24:27 +01:00
bin Explicitly use python3 for pyodide_build 2019-01-09 20:56:46 +05:30
cpython Make cProfile work 2018-11-08 15:20:53 -05:00
docs Update docs/using_pyodide_from_webworker.md 2019-02-07 13:14:28 -08:00
emsdk Update dynCall_so.patch 2019-01-16 16:57:46 -05:00
lz4 Use LZ4 filesystem compression, using the canonical C implementation 2018-09-19 16:44:54 -04:00
packages Implement the ABI number functionality. 2019-01-23 00:07:39 +05:30
pyodide_build Fix twice-defined variable 2019-01-25 10:31:59 -05:00
six Add documentation to new build tools. 2018-06-22 10:22:00 -04:00
src added blank line to trigger CI again 2019-02-07 09:02:46 -08:00
test Apply suggestions from code review 2019-02-07 13:15:40 -08:00
tools Ignore the gfortran link 2019-01-23 19:58:45 -05:00
.bumpversion.cfg Bump version: 0.6.1 → 0.7.0 2019-01-23 18:09:29 -05:00
.clang-format Remove keys from .clang-format 2018-11-13 09:46:24 -05:00
.editorconfig Fix #71: Upgrade to Python 3.7 2018-09-06 10:56:33 -04:00
.gitignore Use dummy threading + re-enable C++ files that failed due to a gloabl 2018-11-15 13:22:36 +01:00
CHANGELOG.md Add some community and contributing guidelines 2018-06-07 15:43:04 -04:00
CODE-OF-CONDUCT.md Update link to recurse center code of conduct 2018-07-18 18:52:18 -04:00
CONTRIBUTING.md Add linting 2018-06-14 14:19:08 -04:00
Dockerfile CLAPACK setup 2018-10-31 15:12:43 +01:00
LICENSE Initial commit 2018-02-23 14:21:29 -05:00
Makefile selenium tests for webworkers 2019-02-06 09:20:34 -08:00
Makefile.envs Implement the ABI number functionality. 2019-01-23 00:07:39 +05:30
README.md Wrap to 80 characters per line 2018-12-11 20:03:48 +05:30
remove_modules.txt Lots of pandas fixes: 2018-04-24 19:29:54 -04:00
run_docker Add Documentation + Minor Changes 2018-12-11 13:26:51 +05:30
setup.cfg Rename to dryrun, add docstring and doctest 2018-10-23 12:13:59 +02:00

README.md

Pyodide

Build Status

The Python scientific stack, compiled to WebAssembly.

It provides transparent conversion of objects between Javascript and Python. When inside a browser, this means Python has full access to the Web APIs.

While closely related to the iodide project, Pyodide may be used standalone in any context where you want to run Python inside a web browser.

For more information, see the demo and the documentation.

Building

Building is easiest on Linux. For other platforms, we recommend using the Docker image (described below) to build Pyodide.

Make sure the prerequisites for emsdk are installed. Pyodide will build a custom, patched version of emsdk, so there is no need to build it yourself prior.

Additional build prerequisites are:

  • A working native compiler toolchain, enough to build CPython.
  • A native Python 3.7 to run the build scripts.
  • PyYAML
  • lessc to compile less to css.
  • uglifyjs to minify Javascript builds.
  • ccache (optional) recommended for much faster rebuilds.

make

Using Docker

We provide a Debian-based Docker image on Docker Hub with the dependencies already installed to make it easier to build Pyodide.

  1. Install Docker

  2. From a git checkout of Pyodide, run ./run_docker

  3. cd /src

  4. Run make to build.

You can edit the files in your source checkout on your host machine, and then repeatedly run make inside the Docker environment to test your changes.

Testing

Install the following dependencies into the default Python installation:

pip install pytest selenium pytest-instafail

Install geckodriver and chromedriver somewhere on your PATH.

pytest test/

Manual Testing

The port 8000 of the docker environment and the host system are automatically binded when ./run_docker is run.

This can be used to test the pyodide builds running within the docker environment using external browser programs on the host system.

To do this, simply run ./bin/pyodide serve

This serves the build directory of the pyodide project on port 8000.

  • To serve a different directory, use the --build_dir argument followed by the path of the directory
  • To serve on a different port, use the --port argument followed by the desired port number

Make sure that the port passed in --port argument is same as the one defined as DOCKER_PORT in the run_docker script.

Benchmarking

Install the same dependencies as for testing.

make benchmark

Linting

Python is linted with flake8. C and Javascript are linted with clang-format.

make lint