From Fedora Project Wiki

Revision as of 14:33, 12 October 2011 by Dmalcolm (talk | contribs) (python3-enchant is now in rawhide (for Fedora 17))

A python 3 stack was added to Fedora in Fedora 13, parallel-installable with the "main" Python 2 stack, and it is gradually growing additional RPMs, as more code is ported to Python 3.

Note that /usr/bin/python is still Python 2.

Porting status

Please keep each of these tables sorted alphabetically by python module name

Python 3 already in Fedora

Python Module Fedora Python 2 package Upstream status of Python 3 Fedora Python 3 package
blender Blender 2.5 migrated its embedded version of python from Python 2 to Python 3. Fedora 15 onwards switched from Blender 2.4 to 2.5, linking against the system Python 3, rather than the system Python 2
bpython Should work in ; needs pyparsing In Fedora 14 onwards as python3-bpython subpackage of bpython (was RHBZ #590107)
swig According to, Python 3 support was added to SWIG in 1.3.37 (released 2009-01-15); generated C code appears to be compilable against both Python 2 and Python 3 Fedora 11 onwards has had a version of "swig" capable of generating code for both Python major-versions.
beaker python-beaker In Fedora 14 onwards as python3-beaker, built as a subpackage of python-beaker
cairo pycairo Upstream packages the py3k version as pycairo and the py2 version as py2cairo. There is a need to port from PyCObject to PyCapsule because Python 3.2 does not support PyCObject In Fedora 15 onwards as python3-cairo)
chardet python-chardet Upstream releasing dual-purpose tarballs In Fedora 13 onwards as python3-chardet (was RHBZ #583186), the update is now stable. Though not yet in the beta release, it will be in the final one.
cherrypy python-cherrypy Python 3 supported as of CherryPy 3.2 (October 2009), upstream releasing separate tarballs for python 3 In Fedora 13 onwards as python3-cherrypy (was RHBZ #579593), though F-13 build is only available as an update.
coverage python-coverage Upstream releasing dual-purpose tarballs In Fedora 13 onwards as python3-coverage subpackage of python-coverage (was RHBZ #536948)
decorator python-decorator Upstream reports that 3.1.2 ought to work, by running 2to3 on the module In Fedora 14 onwards as python3-decorator subpackage of python-decorator
deltarpm deltarpm In Fedora 13 onwards (the "deltarpm" build emits both "python-deltarpm" and "python3-deltarpm" subpackages)
docutils python-docutils Website says: "From version 0.6 Docutils is compatible with Python 3, but requires 2to3." Note: Soft dependency on python-imaging which is not yet ported. We can make python3-docutils not use imaging with reduced functionality compared to the python2 version In Fedora 14 onwards as python3-docutils subpackage of python-docutils (was RHBZ #579567)
enchant python-enchant As of 2010-12-14 1.6.5 onwards should work with Python 3 In Fedora 17 onwards as python3-enchant subpackage of python-enchant (was RHBZ #745237)
gcc gcc-python-plugin supports both Python 2 and Python 3 from one tarball, using "six" In Fedora 16 onwards as gcc-python3-plugin and gcc-python3-debug-plugin subpackages of gcc-python-plugin (was RHBZ #725570)
jinja2 python-jinja2 Version 2.3 introduced 'experimental' Python 3 support. In Fedora 14 onwards as python3-jinja2 subpackage of python-jinja2 (was RHBZ #537268)
lxml python-lxml Upstream releasing dual-purpose tarballs In Fedora 13 onwards as python3-lxml subpackage of python-lxml (was RHBZ #533290)
mako python-mako From version 0.3, mako supports python3 In Fedora 14 onwards as python3-mako subpackage of python-mako (was RHBZ #585036)
minimock python-minimock Asked upstream they will release dual-purpose tarballs In Fedora 13 onwards as python3-minimock subpackage of python-minimock
mpich2, openmpi mpi4py python3-mpi4py-{openmpi,mpich2} in Fedora 13 onwards, built as a subpackage of mpi4py.
numpy numpy python3-{numpy,f2py} in Fedora 15 onwards, built as a subpackage of numpy.
paste python-paste In Fedora 15 onwards as python3-paste subpackage of python-paste
ply python-ply 2 and 3 from same tarball from PLY-3.0 onwards; README states "You should not convert PLY using 2to3 -- it is not necessary and may in fact break the implementation." python3-ply in Fedora 13 onwards, built as a subpackage of python-ply
postgresql py-postgresql In Fedora 13 onwards as python3-postgresql (was RHBZ #579280), though F-13 build is only available as an update
psutil python-psutil In Fedora 13 onwards as a python3-psutil subpackage
psycopg2 python-psycopg2 As of 2011-02-06, Psycopg 2.4 beta1 works with Python 3 In Fedora 16 onwards, as python3-psycopg2 and python3-psycopg2-debug subpackages of python-psycopg2 (was RHBZ #676748)
pygments python-pygments Upstream reports that "Pygments is already ported to Python 3. The same source release can be used for 2.x and 3.x installs" In Fedora 14 onwards as a python3-pygments subpackage of python-pygments (was RHBZ #537244)
gobject pygobject2 I'm working on the py3 port upstream. Note this replaces the need for modules such as PyGTK which will not be ported In Fedora 15 onwards as python3-gobject built as as a subpackage of pygobject2
pyke pyke In Fedora 13 onwards as a python3-pyke subpackage of pyke
PyQt4 PyQt4 In Fedora 14 onwards as python3-PyQt4 and python3-PyQt4-devel subpackages of PyQt4 (was RHBZ #586196)
selinux libselinux-python Generated by SWIG during build of libselinux In Fedora 14 onwards as libselinux-python3 subpackage of libselinux (wasRHBZ #582006)
semanage libsemanage-python Generated by SWIG during build of libsemanage In Fedora 14 onwards as libsemanage-python3 subpackage of libsemanage (was RHBZ #582007)
setuptools python-setuptools In Fedora 13 onwards as a python3-setuptools subpackage (internally we've switched to the "Distribute" fork)
sip sip added (single tarball) In Fedora 14 onwards as python3-sip and python3-sip-devel subpackages of "sip" (was RHBZ #545124)
six python-six In Fedora 16 onwards as python3-six (was RHBZ #690613)
smbpasswd python-smbpasswd Create own package for p3k; sent patch to upstream In Fedora 13 onwards as python3-smbpasswd subpackage (was RHBZ #560456)
sqlalchemy python-sqlalchemy 0.6beta1 has py3k support from a single tarball. Packaged for F-14. Needs nose3 for running unittests of python3-sqlalchemy. Due to incompatible API, decided not to push back to F-13.

Python 3 code not yet in Fedora

Python Module Fedora Python 2 package Upstream status of Python 3 Fedora Python 3 package
mod_wsgi mod_wsgi version 3.0 and later supports Python 3.1 and later:
babel python-babel Patch to .spec to emit python2 and python 3 from one build needs work: RHBZ #537266
IPy python-IPy 0.73 works with Python 3
scipy scipy SVN trunk 6848 works with python 3
PyKDE4 PyKDE4 (from the kdebindings srpm) RHBZ #587005
rpm rpm-python (subpackage of "rpm") dmalcolm and pmatilai ported the C extension for librpm to work with both python 2 and 3; released as rpm 4.8.0 Needs packaging work: see RHBZ #531543

To be categorized

Python Module Fedora Python 2 package Upstream status of Python 3 Fedora Python 3 package
luma Depend on other packages, which have to migrate to py3k
BeautifulSoup python-BeautifulSoup 3.1.0 adds Python 3 support, but reportedly doesn't work as well as 3.0.8 (See and ) Fedora 13 and devel have 3.0.8 for now
bugzilla python-bugzilla
devtools python-tg-devtools
genshi python-genshi experimental py3k branch announced
enum python-enum
fedora python-fedora
migrate python-migrate
nose python-nose This is the current nose3 branch on bitbucket. Googlecode branch is out-of-date. This upstream ticket, indicates the trunk will move to python3 only, and python2 will be in maintenance mode but upstream has said that the current py2 branch is being worked on by others and the py3 branch is lagging behind.
paste.deploy python-paste-deploy
paste.script python-paste-script
py python-py 1.3.0 has "...improved compatibility with Python3..."
pyparsing pyparsing Python 3 support was added in 1.5.2 as a file python-repoze-tm2
repoze.what python-repoze-what
repoze.what.plugins.sql python-repoze-what-plugins-sql
repoze.what.plugins.pylonshq python-repoze-what-pylons
repoze.what.plugins.quickstart python-repoze-what-quickstart
repoze.who python-repoze-who
repoze.who.plugins.friendlyform python-repoze-who-friendlyform python-repoze-who-plugins-sa
repoze.who.plugins.testutil python-repoze-who-testutil
routes python-routes
simplejson python-simplejson
sprox python-sprox
tg TurboGears2
tgext.admin python-tgext-admin
tgext.crud python-tgext-crud
tw python-toscawidgets
turbojson python-turbojson
turbokid python-turbokid
tw.forms python-tw-forms
virtualenv python-virtualenv A forked version for Python 3 is available, but I'm not sure how "official" it is
weberror python-weberror
webflash python-webflash
webhelpers python-webhelpers
webob python-webob
webtest python-webtest
zope.sqlalchemy python-zope-sqlalchemy

Python modules that appear to not yet be ready for Python 3 packaging

Please let us know if this information is out-of-date.

FIXME: add note about if a python3 version should be packaged

Python Module Fedora Python 2 package Upstream status of Python 3 Fedora Python 3 package
augeas python-augeas dmalcolm has experimented with porting this to python 3
Cheetah python-cheetah As of 2010-02-02, upstream site reports that Python 3.xx support will be in Cheetah v3.0, but that it is "still in planning"
cracklib cracklib-python Looking at cracklib-2.8.16, looks like the module needs some work to port (e.g. module initialization), and uses automake so may need work to build multiple times
Crypto python-crypto Experimental patch on upstream list , however upstream forbids US contributors to the project, which seems to have ruled out the patch (and rules out dmalcolm from completing the port) Explanation of the ban on US contributors. If we have any lawyers familiar with the export regulations perhaps we can get the ban lifted?
dbus dbus-python Patch created by Fedora contributor John Palmieri sent upstream, awaiting upstream review - also GDBus can be used through pygobject introspection rhbz 538616
django Django - there's an experimental branch in bitbucket, but as of 2010-04-09 it doesn't appear to have "official" releases
krbV python-krbV Implemented in C, would need porting (with 2to3c ?)
ldap python-ldap Porting discussed on upstream mailing list on 2009-09-03 but appears not to be done yet
libxml2 libxml2-python Porting doesn't seem to have started
MySQLdb MySQL-python As of 2011-07-25, said " Python-3.0 will be supported in a future release."
nss python-nss Looks like we need to port it, and would be non-trivial
parted pyparted Looks like we need to port it
PIL python-imaging As of 2010-01-28, upstream website says "The current free version is PIL 1.1.7. This release supports Python 1.5.2 and newer, including 2.5 and 2.6. A version of 1.1.7 for 3.X will be released later." A 2010-02-21 mailing list post suggests that the port is stalled
pylons python-pylons As of 2010-04-09, it's on the future roadmap for 1.1; see also
sphinx python-sphinx Upstream added Python 3.x support to trunk on 2010-07-28
wx wxPython As of 2010-02-03, appears not to be ported yet; see
xdg pyxdg Appears to not yet be ported; see RHBZ #555620

Python 2 modules that are not going to be ported to Python 3

Python Module Fedora Python 2 package Notes
mod_python Upstream mod_python has effectively stopped since February 2007. ..."You also will never see a version of mod_python for Python 3.X as that is going to require a radical rewrite"... with various suggestions including moving to mod_wsgi
gtk pygtk2 The old C-based bindings are not going to be ported. Instead, the "Gtk" module can be accessed from pygobject introspection with upstream trying to make it easy to transition from PyGTK