This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Python

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This article is a stub. You can help by expanding it.

Python is a cross-platform interpreted programming language. Python powers Portage, eselect, equery, and many other tools in Gentoo.|

Python is a cross-platform interpreted programming language. Python powers Portage, eselect, equery, and many other tools in Gentoo.

Installation

Since Python is so integral to Gentoo there is little chance it is not installed. Doing so would be like removing the heart from Gentoo. There is occasion where Python must be recompiled in order to add new features or to upgrade.

USE flags

USE flags for dev-lang/python An interpreted, interactive, object-oriented programming language

berkdb Add support for sys-libs/db (Berkeley DB for MySQL)
bluetooth Build Bluetooth protocol support in socket module
build  !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used for creating build images and the first half of bootstrapping [make stage1]
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
ensurepip Install the ensurepip module that uses bundled wheels to bootstrap pip and setuptools (if disabled, it will be only possible to use venv `--without-pip`)
examples Install examples, usually source code
gdbm Add support for sys-libs/gdbm (GNU database libraries)
gil Build with Global Interpreter Lock. Disable to use the experimental freethreading mode.
jit Enable experimental Just-In-Time compilation support.
libedit Link readline extension against dev-libs/libedit instead of sys-libs/readline
ncurses Add ncurses support (console display library)
pgo Optimize the build using Profile Guided Optimization (PGO) by running Python's test suite and collecting statistics based on its performance. This will take longer to build.
readline Enable support for libreadline, a GNU line-editing library that almost everyone wants
sqlite Add support for sqlite - embedded sql database
ssl Add support for SSL/TLS connections (Secure Socket Layer / Transport Layer Security)
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
tk Add support for Tk GUI toolkit
valgrind Disable pymalloc when running under dev-debug/valgrind is detected (may incur minor performance penalty even when valgrind is not used)
verify-sig Verify upstream signatures on distfiles
wininst Install Windows executables required to create an executable installer for MS Windows
xml Add support for XML files

Emerge

Python is slotted, which means there is more than one version Python that can be installed on a Gentoo system at the same time. Select the version to install by using an : (colon) and the package atom followed by one of the slot numbers:

For example, to install Python 3.4:

root #emerge --ask dev-lang/python:3.4

Configuration

Setting the active interpreter

The active Python interpreter can be set using the eselect python command. First list the available interpreters using list:

root #eselect python list

Select the desired interpreter using set. In this example the second option was chosen:

root #eselect python set 2


Version upgrade

The old python-updater is no longer used.

Before starting ensure that the system is up to date:

root #emerge --ask --update --newuse --deep @world

To make system packages be rebuilt using the new Python implementation update the PYTHON_TARGETS and PYTHON_SINGLE_TARGET variables in make.conf. For example, when updating from Python 3.4 to 3.5:

FILE /etc/portage/make.conf
PYTHON_TARGETS="python2_7 python3_5"
PYTHON_SINGLE_TARGET="python3_5"

Then update the system again using the --changed-use --deep options to ensure packages using the new Python implementation are

root #emerge --ask --changed-use --deep @world

You may be asked to update any remaining python_targets_python3_4 USE flags as well.

Note that many popular packages such as Docker still require PYTHON_SINGLE_TARGET variable to be set to python2_7 due to various dependencies such as app-text/asciidoc which do not support Python 3.x.

Once the upgrade has completed, old Python implementations can be removed from the system using:

root #emerge --ask --depclean dev-lang/python

After depclean eselect python list will still show old python versions if they were previously selected, to remove these entries run the following command:

root #eselect python cleanup


Usage

Invocation

A specific version of the Python interpreter can be invoked from the command-line directly by running:

user $python2.7

Or

user $python3.4

To execute a script with Python 2.x use the following header:

FILE /usr/local/bin/repo
#!/usr/bin/env python2
...

See also

  • Bash — the default shell on Gentoo systems and a popular shell program found on many Linux systems.
  • PipPython's package management system. It references packages available in the official Python Package Index (PyPI).