FreeBSD Porter's Handbook
Prev | Chapter 6 Special considerations | Next

# 6.12 Using Python

The Ports Collection supports parallel installation of multiple Python versions. Ports should make sure to use a correct `python` interpreter, according to the user-settable `PYTHON_VERSION` variable. Most prominently, this means replacing the path to `python` executable in scripts with the value of `PYTHON_CMD` variable.

Ports that install files under `PYTHON_SITELIBDIR` should use the `pyXY-` package name prefix, so their package name embeds the version of Python they are installed into.

    PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}

Table 6-19. Most useful variables for ports that use Python

`USE_PYTHON` | The port needs Python. Minimal required version can be specified with values such as `2.3+`. Version ranges can also be specified, by separating two version numbers with a dash, e.g.: `2.1-2.3`
`USE_PYDISTUTILS` | Use Python distutils for configuring, compiling and installing. This is required when the port comes with `setup.py`. This overrides the `do-build` and `do-install` targets and may also override `do-configure` if `GNU_CONFIGURE` is not defined.
`PYTHON_PKGNAMEPREFIX` | Used as a `PKGNAMEPREFIX` to distinguish packages for different Python versions. Example: `py24-`
`PYTHON_SITELIBDIR` | Location of the site-packages tree, that contains installation path of Python (usually `LOCALBASE`). The `PYTHON_SITELIBDIR` variable can be very useful when installing Python modules.
`PYTHONPREFIX_SITELIBDIR` | The PREFIX-clean variant of PYTHON_SITELIBDIR. Always use `%%PYTHON_SITELIBDIR%%` in `pkg-plist` when possible. The default value of `%%PYTHON_SITELIBDIR%%` is `lib/python%%PYTHON_VERSION%%/site-packages`
`PYTHON_CMD` | Python interpreter command line, including version number.
`PYNUMERIC` | Dependency line for numeric extension.
`PYNUMPY` | Dependency line for the new numeric extension, numpy. (PYNUMERIC is deprecated by upstream vendor).
`PYXML` | Dependency line for XML extension (not needed for Python 2.0 and higher as it is also in base distribution).
`USE_TWISTED` | Add dependency on twistedCore. The list of required components can be specified as a value of this variable. Example: `web lore pair flow`
`USE_ZOPE` | Add dependency on Zope, a web application platform. Change Python dependency to Python 2.3. Set `ZOPEBASEDIR` containing a directory with Zope installation.

A complete list of available variables can be found in `/usr/ports/Mk/bsd.python.mk`.

Prev | Home | Next
Web applications, Apache and PHP | Up | Using Tcl/Tk

For questions about the FreeBSD ports system, e-mail <ports@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.