pyodide CLI#

This page documents the Pyodide Command Line Interface (CLI) interface. In addition to the commands defined by pyodide-build, documented below, other subcommands are defined in external packages (which can be installed with pip):

  • pyodide pack, defined in pyodide-pack is a package bundler for Pyodide

pyodide#

A command line interface for Pyodide.

Other CLI subcommands are registered via the plugin system by installing Pyodide ecosystem packages (e.g. pyodide-build, pyodide-pack, auditwheel-emscripten, etc.)

Usage

pyodide [OPTIONS] COMMAND [ARGS]...

Options

--version#

Show the version of the Pyodide CLI

app#

Clean build artifacts.

Usage

pyodide app [OPTIONS] COMMAND [ARGS]...

recipes#

Remove build artifacts for recipe packages.

Arguments:
TARGETS: Packages or tags (tag:<name>) to clean. Defaults to all packages.

Usage

pyodide app recipes [OPTIONS] [TARGETS]...

Options

--recipe-dir <recipe_dir>#

Directory containing package recipes. Defaults to <pyodide root>/packages.

--build-dir <build_dir>#

Directory where package build artifacts are stored. Defaults to recipe directory.

Arguments

TARGETS#

Optional argument(s)

Environment variables

PYODIDE_RECIPE_BUILD_DIR

Provide a default for --build-dir

app#

Manage config variables used in pyodide.

Usage

pyodide app [OPTIONS] COMMAND [ARGS]...

get#

Get a value of a single config variable used in pyodide.

Arguments:
CONFIG_VAR: A config variable to get. Use list to see all possible values.

Usage

pyodide app get [OPTIONS] CONFIG_VAR

Arguments

CONFIG_VAR#

Required argument

list#

List config variables used in pyodide.

Usage

pyodide app list [OPTIONS]

app#

Add a new package build recipe or update an existing recipe.

Usage

pyodide app [OPTIONS] COMMAND [ARGS]...

disable#

Disable packages.

Arguments:
NAMES: Package names to disable.

Usage

pyodide app disable [OPTIONS] NAMES...

Options

-m, --message <message>#

Comment to explain why it was disabled.

--recipe-dir <recipe_dir>#

The directory containing the recipe of packages. If not specified, the default is <cwd>/packages.

Arguments

NAMES#

Required argument(s)

enable#

Enable packages.

Arguments:
NAMES: Package names to enable.

Usage

pyodide app enable [OPTIONS] NAMES...

Options

--recipe-dir <recipe_dir>#

The directory containing the recipe of packages. If not specified, the default is <cwd>/packages.

Arguments

NAMES#

Required argument(s)

pin#

Pin packages.

Arguments:
NAMES: Package names to pin.

Usage

pyodide app pin [OPTIONS] NAMES...

Options

-m, --message <message>#

Comment to explain why it was pinned.

--recipe-dir <recipe_dir>#

The directory containing the recipe of packages. If not specified, the default is <cwd>/packages.

Arguments

NAMES#

Required argument(s)

pypi#

Create a new package recipe from PyPI or update an existing recipe.

Arguments:
NAME: Package name on PyPI.

Usage

pyodide app pypi [OPTIONS] NAME

Options

-u, --update#

Update an existing recipe instead of creating a new one.

--update-patched#

Force update the package even if it contains patches.

--update-pinned#

Force update the package even if is pinned.

--version <version>#

The version of the package, if not specified, latest version will be used.

--source-format <source_format>#

Which source format is preferred. Options are wheel or sdist. If not specified, then either a wheel or an sdist will be used.

Options:

wheel | sdist

--recipe-dir <recipe_dir>#

The directory containing the recipe of packages. If not specified, the default is <cwd>/packages.

-m, --maintainer <maintainer>#

The github username to use as the maintainer.

--gh-maintainer, --ghm#

Set the maintainer from ‘gh auth status’. Requires gh cli.

Arguments

NAME#

Required argument

app#

Manage cross-build environment for building packages for Pyodide.

Usage

pyodide app [OPTIONS] COMMAND [ARGS]...

install#

Install cross-build environment.

The installed environment is the same as the one that would result from PYODIDE_PACKAGES=’scipy’ make except that it is much faster. The goal is to enable out-of-tree builds for binary packages that depend on numpy or scipy.

Arguments:
VERSION: version of cross-build environment to install (optional)

Usage

pyodide app install [OPTIONS] [VERSION]

Options

--path <path>#

destination to download cross-build environment directory to.

--url <url>#

URL to download cross-build environment from.

-f, --force#

force installation even if the version is not compatible.

--skip-cross-build-packages#

Deprecated, no-op. Cross-build packages are installed lazily when required by build dependencies.

Arguments

VERSION#

Optional argument

Environment variables

PYODIDE_XBUILDENV_PATH

Provide a default for --path

PYODIDE_SKIP_CROSS_BUILD_PACKAGES

Provide a default for --skip-cross-build-packages

install-emscripten#

Install Emscripten SDK into the cross-build environment.

This command clones the emsdk repository, installs and activates the specified Emscripten version, and applies Pyodide-specific patches.

If the requested version is already installed, the command is a no-op unless –force is passed.

Usage

pyodide app install-emscripten [OPTIONS]

Options

--version <version>#

Emscripten version corresponding to the target Pyodide version

--path <path>#

Pyodide cross-env path

-f, --force#

force reinstallation even if the same version is already installed.

uninstall#

Uninstall cross-build environment.

Arguments:
VERSION: version of cross-build environment to uninstall (optional)

Usage

pyodide app uninstall [OPTIONS] [VERSION]

Options

--path <path>#

path to cross-build environment directory.

Arguments

VERSION#

Optional argument

use#

Select a version of cross-build environment to use.

Arguments:
VERSION: version of cross-build environment to use (required)

Usage

pyodide app use [OPTIONS] VERSION

Options

--path <path>#

path to cross-build environment directory.

Arguments

VERSION#

Required argument

version#

Print current version of cross-build environment.

Usage

pyodide app version [OPTIONS]

Options

--path <path>#

path to cross-build environment directory.

versions#

Print all installed versions of cross-build environment.

Usage

pyodide app versions [OPTIONS]

Options

--path <path>#

path to cross-build environment directory.

app#

Auditwheel-like tool for emscripten wheels and shared libraries.

Usage

pyodide app [OPTIONS] COMMAND [ARGS]...

copy#

[Deprecated] Copy shared libraries to the wheel directory. Works same as repair. Use repair instead.

Arguments:
WHEEL_FILE: Path to wheel file. (required)

Usage

pyodide app copy [OPTIONS] WHEEL_FILE

Options

--libdir <libdir>#

Path to the directory containing the shared libraries.

Default:

'lib'

--output-dir <output_dir>#

Directory to output repaired wheel or shared library. (default: overwrite the input file)

Arguments

WHEEL_FILE#

Required argument

exports#

Show exports of a wheel or a shared library file.

Arguments:
WHEEL_OR_SO_FILE: Path to wheel or a shared library file. (required)

Usage

pyodide app exports [OPTIONS] WHEEL_OR_SO_FILE

Options

--show-type#

Show function type.

Default:

False

Arguments

WHEEL_OR_SO_FILE#

Required argument

imports#

Show imports of a wheel or a shared library file.

Arguments:
WHEEL_OR_SO_FILE: Path to wheel or a shared library file. (required)

Usage

pyodide app imports [OPTIONS] WHEEL_OR_SO_FILE

Options

--show-type#

Show function type.

Default:

False

Arguments

WHEEL_OR_SO_FILE#

Required argument

repair#

Repair a wheel file: copy shared libraries to the wheel directory.

Arguments:
WHEEL_FILE: Path to wheel file. (required)

Usage

pyodide app repair [OPTIONS] WHEEL_FILE

Options

--libdir <libdir>#

Path to the directory containing the shared libraries.

Default:

'lib'

--output-dir <output_dir>#

Directory to output repaired wheel or shared library. (default: overwrite the input file)

-r, --with-runtime-paths#

Show runtime paths.

Arguments

WHEEL_FILE#

Required argument

show#

Show shared library dependencies of a wheel or a shared library file.

Arguments:
WHEEL_OR_SO_FILE: Path to wheel or a shared library file. (required)

Usage

pyodide app show [OPTIONS] WHEEL_OR_SO_FILE

Options

-r, --with-runtime-paths#

Show runtime paths.

Arguments

WHEEL_OR_SO_FILE#

Required argument

build-recipes#

Build packages using yaml recipes.

Arguments:
PACKAGES: Packages to build, or * for all packages in recipe directory.

Usage

pyodide build-recipes [OPTIONS] PACKAGES...

Options

--recipe-dir <recipe_dir>#

The directory containing the recipe of packages. If not specified, the default is ./packages

--build-dir <build_dir>#

The directory where build directories for packages are created. Default: recipe_dir.

--install, --no-install#

If true, install the built packages into the install_dir. If false, build packages without installing.

--install-dir <install_dir>#

Path to install built packages and pyodide-lock.json. If not specified, the default is ./dist.

--metadata-files, --no-metadata-files#

If true, extract the METADATA file from the built wheels to a matching *.whl.metadata file. If false, no *.whl.metadata file is produced.

--no-deps, --no-no-deps#

Removed, use pyodide build-recipes-no-deps instead.

--cflags <cflags>#

Extra compiling flags. Default: SIDE_MODULE_CFLAGS

--cxxflags <cxxflags>#

Extra compiling flags. Default: SIDE_MODULE_CXXFLAGS

--ldflags <ldflags>#

Extra linking flags. Default: SIDE_MODULE_LDFLAGS

--target-install-dir <target_install_dir>#

The path to the target Python installation. Default: TARGETINSTALLDIR

--host-install-dir <host_install_dir>#

Directory for installing built host packages. Default: HOSTINSTALLDIR

--log-dir <log_dir>#

Directory to place log files

--force-rebuild, --no-force-rebuild#

Force rebuild of all packages regardless of whether they appear to have been updated

--n-jobs <n_jobs>#

Number of packages to build in parallel (default: # of cores in the system)

--compression-level <compression_level>#

Level of zip compression to apply when installing. 0 means no compression.

Default:

6

--clean#

Remove the build directory after a successful build of each package.

--skip-emscripten-install#

Skip automatic installation of Emscripten if not found.

Arguments

PACKAGES#

Required argument(s)

Environment variables

PYODIDE_RECIPE_BUILD_DIR

Provide a default for --build-dir

PYODIDE_ZIP_COMPRESSION_LEVEL

Provide a default for --compression-level

PYODIDE_SKIP_EMSCRIPTEN_INSTALL

Provide a default for --skip-emscripten-install

build-recipes-no-deps#

Build packages using yaml recipes but don’t try to resolve dependencies.

Arguments:
PACKAGES: Packages to build, or * for all packages in recipe directory.

Usage

pyodide build-recipes-no-deps [OPTIONS] PACKAGES...

Options

--recipe-dir <recipe_dir>#

The directory containing the recipe of packages. If not specified, the default is ./packages

--build-dir <build_dir>#

The directory where build directories for packages are created. Default: recipe_dir.

--cflags <cflags>#

Extra compiling flags. Default: SIDE_MODULE_CFLAGS

--cxxflags <cxxflags>#

Extra compiling flags. Default: SIDE_MODULE_CXXFLAGS

--ldflags <ldflags>#

Extra linking flags. Default: SIDE_MODULE_LDFLAGS

--target-install-dir <target_install_dir>#

The path to the target Python installation. Default: TARGETINSTALLDIR

--host-install-dir <host_install_dir>#

Directory for installing built host packages. Default: HOSTINSTALLDIR

--force-rebuild, --no-force-rebuild#

Force rebuild of all packages regardless of whether they appear to have been updated

--continue#

Continue a build from the middle. For debugging. Implies ‘–force-rebuild’

--skip-rust-setup#

Don’t setup rust environment when building a rust package

--clean#

Remove the build directory after a successful build of each package.

--skip-emscripten-install#

Skip automatic installation of Emscripten if not found.

Arguments

PACKAGES#

Required argument(s)

Environment variables

PYODIDE_RECIPE_BUILD_DIR

Provide a default for --build-dir

PYODIDE_SKIP_EMSCRIPTEN_INSTALL

Provide a default for --skip-emscripten-install

main#

Use pypa/build to build a Python package from source, pypi or url.

Arguments:
SOURCE_LOCATION: Build source, can be source folder, pypi version specification,
or url to a source dist archive or wheel file. If this is blank, it
will build the current directory.

Usage

pyodide main [OPTIONS] [SOURCE_LOCATION]

Options

-o, --outdir <output_directory>#

which directory should the output be placed into?

-r, --requirements <requirements_txt>#

Build a list of package requirements from a requirements.txt file

--exports <exports>#

Which symbols should be exported when linking .so files?

--build-dependencies, --no-build-dependencies#

Fetch dependencies from pypi and build them too.

--output-lockfile <output_lockfile>#

Output list of resolved dependencies to a file in requirements.txt format

--skip-dependency <skip_dependency>#

Skip building or resolving a single dependency, or a pyodide-lock.json file. Use multiple times or provide a comma separated list to skip multiple dependencies.

--skip-built-in-packages, --no-skip-built-in-packages#

Don’t build dependencies that are built into the pyodide distribution.

--compression-level <compression_level>#

Compression level to use for the created zip file

Default:

6

-n, --no-isolation#

Disable building the project in an isolated virtual environment. Build dependencies must be installed separately when this option is used

-x, --skip-dependency-check#

Do not check that the build dependencies are installed. This option is only useful when used with –no-isolation.

-C, --config-setting <KEY[=VALUE>#

Settings to pass to the backend. Works same as the –config-setting option of pypa/build.

--xbuildenv-path <xbuildenv_path>#

Path to the cross-build environment directory.

--skip-emscripten-install#

Skip automatic installation of Emscripten if not found.

Arguments

SOURCE_LOCATION#

Optional argument

Environment variables

PYODIDE_BUILD_EXPORTS

Provide a default for --exports

PYODIDE_XBUILDENV_PATH

Provide a default for --xbuildenv-path

PYODIDE_SKIP_EMSCRIPTEN_INSTALL

Provide a default for --skip-emscripten-install

main#

Compile .py files to .pyc in a wheel, a zip file, or a folder with wheels or zip files.

If the provided folder contains the pyodide-lock.json file, it will be rewritten with the updated wheel / zip file paths and sha256 checksums.

Arguments:
PATH: Path to the input wheel or a folder with wheels or zip files.

Usage

pyodide main [OPTIONS] PATH

Options

--silent, --no-silent#

Silent mode, do not print anything.

--keep, --no-keep#

Keep the original wheel / zip file.

--compression-level <compression_level>#

Compression level to use for the created zip file.

Default:

6

--exclude <exclude>#

List of files to exclude from compilation, works only for directories. Defaults to no files.

Arguments

PATH#

Required argument

main#

Create a Pyodide virtual environment.

Additionally, this interface supports a subset of the arguments that virtualenv supports, with some minor differences for Pyodide compatibility. Please note that passing extra options is experimental and may be subject to change.

Arguments:
DEST: directory to create virtualenv at

Usage

pyodide main [OPTIONS] DEST

Options

--clear, --no-clear#

Remove the destination directory if it exists.

--no-vcs-ignore#

Don’t create VCS ignore directive in the destination directory.

--no-download, --never-download#

Disable download of the latest pip/setuptools from PyPI.

--download, --no-download#

Enable download of the latest pip/setuptools from PyPI.

--extra-search-dir <extra_search_dir>#

A path containing wheels to extend the internal wheel list.

--pip <pip>#

Version of pip to install as seed: embed, bundle, or exact version.

Default:

'bundle'

--setuptools <setuptools>#

Version of setuptools to install as seed: embed, bundle, none or exact version.

--no-setuptools#

Do not install setuptools.

--no-periodic-update#

Disable the periodic update of the embedded wheels.

Arguments

DEST#

Required argument

main#

Manipulate pyodide-lock.json lockfiles.

Usage

pyodide main [OPTIONS] COMMAND [ARGS]...

add-wheels#

Add a set of package wheels to an existing pyodide-lock.json and write it out to pyodide-lock-new.json

Each package in the wheel will be added to the output lockfile, including resolution of dependencies in the lock file. By default this will fail if a dependency isn’t available in either the existing lock file, or in the set of new wheels.

Arguments:
WHEELS: List of paths to wheel files. (required)

Usage

pyodide main add-wheels [OPTIONS] WHEELS...

Options

--ignore-missing-dependencies#

If this is true, dependencies which are not in the original lockfile or the added wheels will be added to the lockfile. Warning: This will allow a broken lockfile to be created.

--input <input>#

Source lockfile

--output <output>#

Updated lockfile

--base-path <base_path>#

Base path for wheels - wheel file names will be created relative to this path.

--wheel-url <wheel_url>#

Base url which will be appended to the wheel location. Use this if you are hosting these wheels on a different server to core pyodide packages

Arguments

WHEELS#

Required argument(s)