mirror of https://github.com/pyodide/pyodide.git
53 lines
1.5 KiB
Markdown
53 lines
1.5 KiB
Markdown
# 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,
|
|
```js
|
|
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,
|
|
```py
|
|
import sys
|
|
|
|
if "pyodide" in sys.modules:
|
|
# running in Pyodide
|
|
```
|
|
|
|
More generally you can detect Python built with Emscripten (which includes
|
|
Pyodide) with,
|
|
```py
|
|
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,
|
|
```python
|
|
import os
|
|
|
|
if "PYODIDE_PACKAGE_ABI" in os.environ:
|
|
# building for Pyodide
|
|
```
|