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]](../images/note.png)
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]](../images/note.png)
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]](../images/important.png)
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
|