pyodide/docs/faq.md

1.5 KiB

Frequently Asked Questions (FAQ)

How can I load external python files in Pyodide?

The two possible solutions are,

  • include these files in a python package, build a pure python wheel with python setup.py bdist_wheel and {ref}load it with micropip <micropip-installing-from-arbitrary-urls>.
  • fetch the python code as a string and evaluate it in Python,
    pyodide.eval_code(pyodide.open_url('https://some_url/...'))
    

In both cases, files need to be served with a web server and cannot be loaded from local file system.

Why can't I load files from the local file system?

For security reasons JavaScript in the browser is not allowed to load local data files. You need to serve them with a web-browser.

How to detect that code is run with Pyodide?

At run time, you can detect that a code is running with Pyodide using,

import sys

if "pyodide" in sys.modules:
   # running in Pyodide

More generally you can detect Python built with Emscripten (which includes Pyodide) with,

import platform

if platform.system() == 'Emscripten':
    # running in Pyodide or other Emscripten based build

This however will not work at build time (i.e. in a setup.py) due to the way the pyodide build system works. It first compiles packages with the host compiler (e.g. gcc) and then re-runs the compilation commands with emsdk. So the setup.py is never run inside the Pyodide environement.

To detect pyodide, at build time use,

import os

if "PYODIDE_PACKAGE_ABI" in os.environ:
    # building for Pyodide