Introduction

Installation

Frequently asked questions

Syntax, keywords and built-in functions

Standard distribution

import implementation

Browser interface

Brython-specific built-in modules

Working with Brython

Brython for Firefox OS

Cookbook

 

Implementation of import

Like in standard Python, you can install modules or packages Python in your application by putting them in the root directory, or in directories with a file __init.py__.

Note that modules must be encoded in utf-8 ; the encoding declaration at the top of the script is ignored.

For instance, the application can be made of the following files and directories :

.bundle-include
app.html
brython.js
brython_modules.js
brython_stdlib.js
index.html
users.py
utils.py
+ app
    __init__.py
    records.py
    tables.py

A Python script in app.html can run the imports

import users
import app.records

If the standard distribution has been included in the page by

<script type="text/javascript" src="brython_stdlib.js"></script>

the script can also run

import datetime
import re

To import modules or packages, Brython uses the same mechanism as CPython : to resolve "import X", the program looks for a file in several places :

  • a module X in the standard distribution
  • a file X.py in the root directory
  • a file __init__.py in directory X

Since the browser has no direct access to the file system, looking for a file must be done by an Ajax call, which returns an error message if there is no file at the specified url.

Optimisation

The process described above has two main drawbacks :

  • the relatively big size of brython_stdlib.js (more than 3 Mb)
  • the time taken by Ajax calls

To optimise imports, if Brython was installed by pip, you can generate a file brython_modules.js which only holds the modules used by the application.

For that, open a console window, navigate to the application directory and execute

python -m brython --modules

You can then replace all the occurrences of

<script type="text/javascript" src="brython_stdlib.js"></script>

by

<script type="text/javascript" src="brython_modules.js"></script>