#### Beyond Linux® From Scratch (systemd Edition) - Version 10.1

### Chapter 13. Programming

- Prev

  Python-2.7.18

- Next

  Python Modules

- Up
- Home

# Python-3.9.2

## Introduction to Python 3

The Python 3 package contains the Python development environment. This is useful for object-oriented programming, writing scripts, prototyping large programs or developing entire applications.

### Note

Python 3 was installed in LFS. The only reason to rebuild it here is if optional modules are needed.

This package is known to build and work properly using an LFS-10.1 platform.

### Package Information

- Download (HTTP): https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz

- Download MD5 sum: f0dc9000312abeb16de4eccce9a870ab

- Download size: 18 MB

- Estimated disk space required: 379 MB (add 36 MB for tests)

- Estimated build time: 0.5 SBU (using parallelism=4; add 1.7 SBU for tests)

### Python 3 Dependencies

#### Recommended

SQLite-3.34.1 (required if building firefox or thunderbird)

#### Optional

BlueZ-5.55, GDB-10.1 (required for some tests), Valgrind-3.16.1, and libmpdec

#### Optional (For Additional Modules)

Berkeley DB-5.3.28 and Tk-8.6.11.1

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/Python3

## Installation of Python 3

Install Python 3 by running the following commands:

    CXX="/usr/bin/g++"              \
    ./configure --prefix=/usr       \
                --enable-shared     \
                --with-system-expat \
                --with-system-ffi   \
                --with-ensurepip=yes &&
    make

To test the result, issue make test. Some tests may need Internet connection.

Now, as the `root` user:

    make install

## Command Explanations

CXX="/usr/bin/g++" ./configure ...: Avoid an annoying message during configuration.

`--with-system-expat`: This switch enables linking against the system version of Expat.

`--with-system-ffi`: This switch enables linking against system version of libffi.

`--with-ensurepip=yes` : This switch enables building pip and setuptools packaging programs. setuptools is needed for building some Python modules.

`--with-dbmliborder=bdb:gdbm:ndbm`: Use this switch if you want to build Python DBM Module against Berkeley DB instead of GDBM.

`--enable-optimization`: Use this switch if you want to enable expensive optimizations (i.e. Profile Guided Optimizations). This adds around 20 SBU, but can slightly speed up some uses, such as using Sphinx for creating documentation, or use of Python3 scripts.

`--with-lto`: This optional switch enables thick Link Time Optimization. Unusually, it creates a much larger `/usr/lib/python3.9/config-3.9-<arch>-linux-gnu/libpython3.9.a` with a small increase in the time to compile Python. Run-time results do not appear to show any benefit from doing this.

## Configuring Python 3

In order for python3 to find the installed documentation, create the following version independent symlink:

    ln -svfn python-3.9.2 /usr/share/doc/python-3

and add the following environment variable to the individual user's or system's profile:

    export PYTHONDOCS=/usr/share/doc/python-3/html

## Contents

Installed Programs: 2to3 (symlink) and 2to3-3.9, easy_install-3.9, idle3 (symlink) and idle3.9, pip3 (symlink) and pip3.9, pydoc3 and pydoc3.9, python3 (symlink); python3.9, and python3 (symlink), and python3.9 python3-config (symlink) and python3.9-config
Installed Libraries: libpython3.9.so and libpython3.so
Installed Directories: /usr/include/python3.9, /usr/lib/python3.9, and /usr/share/doc/python-3.9.2

### Short Descriptions

easy_install | is a frontend to pip3 to make it easier to configure python modules through the PIP package manager
idle3 | is a wrapper script that opens a Python aware GUI editor. For this script to run, you must have installed Tk before Python so that the Tkinter Python module is built
pydoc3 | is the Python documentation tool
python3 | is an interpreted, interactive, object-oriented programming language
python3.9 | is a version-specific name for the python program

Last updated on 2021-02-21 11:05:24 -0800

- Prev

  Python-2.7.18

- Next

  Python Modules

- Up
- Home