CLI Reference#

All commands are accessed through the pyodide CLI, provided by the pyodide-cli package (installed automatically with pyodide-build).

pyodide build#

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 build [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

pyodide 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

pyodide 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

pyodide clean#

Clean build artifacts.

Usage

pyodide clean [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 clean 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

pyodide config#

Manage config variables used in pyodide.

Usage

pyodide config [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 config get [OPTIONS] CONFIG_VAR

Arguments

CONFIG_VAR#

Required argument

list#

List config variables used in pyodide.

Usage

pyodide config list [OPTIONS]

pyodide py-compile#

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 py-compile [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

pyodide skeleton#

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

Usage

pyodide skeleton [OPTIONS] COMMAND [ARGS]...

disable#

Disable packages.

Arguments:
NAMES: Package names to disable.

Usage

pyodide skeleton 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 skeleton 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 skeleton 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 skeleton 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

pyodide venv#

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 venv [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

pyodide xbuildenv#

Manage cross-build environment for building packages for Pyodide.

Usage

pyodide xbuildenv [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 xbuildenv 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.

--nightly#

install a nightly cross-build environment instead of a stable release.

--debug#

install the debug variant of the cross-build environment (nightly only).

--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 xbuildenv 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 xbuildenv 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 xbuildenv 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 xbuildenv version [OPTIONS]

Options

--path <path>#

path to cross-build environment directory.

versions#

Print all installed versions of cross-build environment.

Usage

pyodide xbuildenv versions [OPTIONS]

Options

--path <path>#

path to cross-build environment directory.