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.
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.
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.
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.
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.
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.
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.
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.
search#
Search for available versions of cross-build environment.
Usage
pyodide app search [OPTIONS]
Options
- --metadata <metadata_path>#
path to cross-build environment metadata file. It can be a URL or a local file. If not given, the default metadata file is used.
- -a, --all#
search all versions, without filtering out incompatible ones.
- --json#
output results in JSON format.
uninstall#
Uninstall cross-build environment.
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.
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.
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.
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.
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.
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.
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.
* 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.metadatafile. If false, no*.whl.metadatafile 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.
* 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.
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.
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.
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.
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)