Python-3.12.0
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, or to upgrade this package.
Note
Development versions of BLFS may not build or run
some packages properly if LFS or dependencies have been updated
since the most recent stable versions of the books.
Important
If upgrading to a new Python-3 minor version (for example,
from Python-3.11.x to Python-3.12.0), you will need to reinstall
any Python3 modules you have installed. You should also
reinstall packages that generate Python3 modules
including
gobject-introspection-1.78.1,
libxml2-2.12.1,
opencv-4.8.1,
Graphviz-9.0.0 (if swig is installed).
Before you upgrade, you can get a list of modules installed
with pip3 list. The list may be incomplete as
some Python modules are not installed with pip3,
for example the cracklib
module installed by
CrackLib-2.9.11. Use ls
/usr/lib/python3.minor
/site-packages
for a comprehensive list.
The Python modules from LFS will also have to be reinstalled:
flit-core,
wheel,
setuptools,
meson,
MarkupSafe,
and Jinja2.
Package Information
Additional Optional Download
Python 3 Dependencies
Recommended
SQLite-3.44.2 (required if building firefox or thunderbird)
Optional
BlueZ-5.70,
GDB-13.2 (required for some tests),
Valgrind-3.22.0, and
libmpdec
Optional (For Additional Modules)
libnsl-2.0.1,
Tk-8.6.13, and
Berkeley DB (deprecated)
Editor Notes:
https://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 \
--enable-optimizations &&
make
To test the result, issue LC_ALL=en_US.UTF-8
make test.
Some tests may need an Internet connection.
Now, as the root
user:
make install
If upgrading and the documentation has been downloaded, optionally install
it as the root
user:
install -v -dm755 /usr/share/doc/python-3.12.0/html
tar --strip-components=1 \
--no-same-owner \
--no-same-permissions \
-C /usr/share/doc/python-3.12.0/html \
-xvf ../python-3.12.0-docs-html.tar.bz2
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-dbmliborder=bdb:gdbm:ndbm
: Use this switch
if you want to build the Python DBM Module
against Berkeley DB instead of
GDBM.
--enable-optimizations
: This switch enables
stable, but expensive, optimizations.
--with-lto
: This optional switch enables thick Link
Time Optimization. Unusually, it creates a much larger /usr/lib/python3.12/config-3.12-<arch>-linux-gnu/libpython3.12.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.12.0 /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.12,
idle3 (symlink) and
idle3.12,
pip3 and
pip3.12,
pydoc3 (symlink) and
pydoc3.12,
python3 (symlink) and
python3.12, and
python3-config (symlink) and
python3.12-config
Installed Libraries:
libpython3.12.so and libpython3.so
Installed Directories:
/usr/include/python3.12,
/usr/lib/python3.12, and
/usr/share/doc/python-3.12.0
Short Descriptions
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.12 |
is a version-specific name for the python
program
|