Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code.

Python in MacPorts

MacPorts allows the installation of several different versions of python.
Versions 2.6 and later, however, are the primary focus of work.


Python is installed as Framework.
To maintain compatibility, however, python24 and python25 install as a hybrid Framework/Library installation (see #16334).

Avoiding Conflicts

Since MacPorts supports several different version of Python, conventions are adopted to ensure that there are no conflicts.
Ports which use the python PortGroups (python24, python25, python26, python27, python31 and python32) are automatically installed so as to avoid conflicts.
Other python packages must self-enforce conventions to avoid conflicts.

Versions 2.4 and 2.5

  • Header files are installed into ${prefix}/include/python${python.branch}.
  • Library files are installed into ${prefix}/lib/python${python.branch}.
  • Site-packages are installed into ${prefix}/lib/python${python.branch}/site-packages.

Versions 2.6 and Later

  • Header files are installed into ${frameworks_dir}/Python.framework/Versions/${python.branch}/include/python${python.branch}.
  • Library files are installed into ${frameworks_dir}/Python.framework/Versions/${python.branch}/lib/python${python.branch}.
  • Site-packages are installed into ${frameworks_dir}/Python.framework/Versions/${python.branch}/lib/python${python.branch}/site-packages.

pkg-config Files

Some python packages (such as Pycairo) install .pc files for pkg-config.
Since these files do not have the python version in their names, they can not be installed in the standard locations for pkg-config.
Instead they are installed into ${frameworks_dir}/Python.framework/Versions/${python.branch}/lib/lib/pkgconfig.

In order for pkg-config to find the .pc files, the environment variable PKG_CONFIG_PATH must be set.
For MacPorts Portfiles, the variable configure.pkg_config_path can be used for this purpose.

no-user-cfg Option

The existence of ~/pydistutils.cfg can cause problems during installation of python packages (see #9831).
For Python version 2.5 and later, the option --no-user-cfg has been added to allow this file to be ignored.

Converting to the unified python PortGroup

As of July 2011, a new unified python PortGroup has been introduced to simplify the maintenance of Python module ports. It uses subports to keep a single Portfile for all versions of python.

Look at the examples to know how to convert to it...

Examples: r82756, r82241

Mailing List archive: Unifying Python Ports Python portgroup

PortGroup: trunk/dports/_resources/port1.0/group/python-1.0.tcl

Last modified 6 years ago Last modified on Feb 17, 2013, 11:43:33 PM