From Fedora Project Wiki

Revision as of 01:33, 25 July 2012 by Dmalcolm (talk | contribs) (→‎Porting status: nose is in)

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 0.9.6.2: http://bitbucket.org/bobf/bpython/issue/84/bpython-doesnt-work-with-python-3 ; needs pyparsing In Fedora 14 onwards as python3-bpython subpackage of bpython (was RHBZ #590107)
swig According to http://www.swig.org/news.php, 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.
amqplib In Fedora as python3-amqplib subpackage of python-amqplib
ansi2html In Fedora as python3-ansi2html subpackage of python-ansi2html
anyjson In Fedora as python3-anyjson subpackage of python-anyjson
asciitable In Fedora as python3-asciitable subpackage of python-asciitable
atpy ATpy In Fedora 13 onwards as python3-ATpy, built as a subpackage of ATpy
auth In Fedora as python3-auth.credential subpackage of python-auth-credential
babel python-babel python3-babel built as a subpackage of babel (Patch to .spec to emit python2 and python 3 from one build was RHBZ #537266)
beaker python-beaker In Fedora 14 onwards as python3-beaker, built as a subpackage of python-beaker
beautifulsoup4 python-BeautifulSoup beautifulsoup4 adds Python 3 support Fedora 15 onwards has python3-BeautifulSoup, built as a subpackage of python-BeautifulSoup.src.rpm, using a copy of the 4.* tarball
bs4 In Fedora as python3-beautifulsoup4 subpackage of python-beautifulsoup4
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.
cmd2 In Fedora as python3-cmd2 subpackage of python-cmd2
cobbler koan In Fedora as subpackages cobbler cobbler-web koan of cobbler
coverage python-coverage Upstream releasing dual-purpose tarballs In Fedora 13 onwards as python3-coverage subpackage of python-coverage (was RHBZ #536948)
Crypto python-crypto PyCrypto supports Python 3 as of 2.4 In Fedora 17 onwards as python3-crypto subpackage of python-crypto (was RHBZ #748529)
cvxopt In Fedora as python3-cvxopt subpackage of python-cvxopt
dateutil In Fedora as python3-dateutil package
decorator python-decorator Upstream reports that 3.1.2 ought to work, by running 2to3 on the module decorator.py 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)
dirq In Fedora as python3-dirq subpackage of python-dirq
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)
easygui In Fedora as python3-easygui subpackage of python-easygui
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)
execnet In Fedora as python3-execnet subpackage of python-execnet
feedparser In Fedora as python3-feedparser subpackage of python-feedparser
flexmock In Fedora as python3-flexmock subpackage of python-flexmock
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)
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
gobject pygobject3 In Fedora as python3-gobject built as as a subpackage of pygobject3
html5lib In Fedora as python3-html5lib subpackage of python-html5lib
httplib2 In Fedora as python3-httplib2 subpackage of python-httplib2
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)
lcgdm In Fedora as lfc-python3 and dpm-python3 subpackages of lcgdm
In Fedora as loook
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)
mysql-connector-python In Fedora as mysql-connector-python3subpackage of mysql-connector-python
manuel In Fedora as python3-manuel subpackage of python-manuel
markdown In Fedora as python3-markdown subpackage of python-markdown
markdown2 In Fedora as python3-markdown2 subpackage of python-markdown2
markupsafe In Fedora as python3-markupsafe subpackage of python-markupsafe
messaging In Fedora as python3-messaging subpackage of python-messaging
mglob In Fedora as python3-mglob subpackage of python-mglob
minimock python-minimock Asked upstream they will release dual-purpose tarballs In Fedora 13 onwards as python3-minimock subpackage of python-minimock
mock In Fedora as python3-mock subpackage of python-mock
mpich2, openmpi mpi4py python3-mpi4py-{openmpi,mpich2} in Fedora 13 onwards, built as a subpackage of mpi4py.
In Fedora as nfoview
In Fedora as nordugrid-arc-python3 subpackage of nordugrid-arc
networkx In Fedora as python3-networkx subpackage of python-networkx
nose In Fedora as python3-nose subpackage of python-nose
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
pbs In Fedora as python3-pbs subpackage of python-pbs
pip In Fedora as python3-pip subpackage of python-pip
pkgwat In Fedora as python3-python-pkgwat-api subpackage of python-pkgwat-api
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)
pycmd In Fedora as python3-pycmd subpackage of pycmd
pyfits pyfits In Fedora as a python3-pyfits subpackage of pyfits
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)
pyinotify In Fedora as python3-inotify subpackage of python-inotify
pyke pyke In Fedora 13 onwards as a python3-pyke subpackage of pyke
pyp2rpm pyp2rpm In Fedora as a python3-pyp2rpm subpackage of pyp2rpm
pyparsing pyparsing Python 3 support was added in 1.5.2 as a pyparsing_py3.py file In Fedora as python3-parsing subpackage of pyparsing
PyQt4 PyQt4 In Fedora 14 onwards as python3-PyQt4 and python3-PyQt4-devel subpackages of PyQt4 (was RHBZ #586196)
Pyro4 In Fedora as python3-pyro subpackage of python-pyro
pyshp pyshp In Fedora as a python3-pyshp subpackage of pyshp
pytest In Fedora as python3-pytest subpackage of pytest
requests In Fedora as python3-requests subpackage of python-requests
RestAuthCommon In Fedora as python3-restauth-common subpackage of python-restauth-common
revisor In Fedora as revisor-cli subpackage of revisor
scipy scipy SVN trunk 6848 works with python 3 In Fedora as python3-scipy subpackage of scipy
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)
setproctitle In Fedora as python3-setproctitle subpackage of python-setproctitle
setuptools python-setuptools In Fedora 13 onwards as a python3-setuptools subpackage (internally we've switched to the "Distribute" fork)
simplegeneric python-simplegeneric In Fedora 17 onwards as a python3-simplegeneric subpackage of python-simplegeneric; also added in a Fedora 16 update (was RHBZ #785056)
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)
sleekxmpp In Fedora as python3-sleekxmpp subpackage of python-sleekxmpp
smbc In Fedora as python3-smbc subpackage of python-smbc
smbpasswd python-smbpasswd Create own package for p3k; sent patch to upstream In Fedora 13 onwards as python3-smbpasswd subpackage (was RHBZ #560456)
sphinx python-sphinx Upstream added Python 3.x support to trunk on 2010-07-28 In Fedora as python3-sphinx subpackage of python-sphinx
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.
stomp In Fedora as python3-stomppy subpackage of stomppy
straight In Fedora as python3-straight-plugin subpackage of python-straight-plugin
tempita In Fedora as python3-tempita subpackage of python-tempita
tornado In Fedora as python3-tornado subpackage of python-tornado
urwid In Fedora as python3-urwid subpackage of python-urwid
yaml PyYAML In Fedora as python3-PyYAML subpackage of PyYAML
zmq In Fedora as subpackages python3-zmq python3-zmq-tests of python-zmq
zope.event In Fedora as python3-zope-event subpackage of python-zope-event
zope.fixers In Fedora as python3-zope-fixers src.rpm

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: http://code.google.com/p/modwsgi/wiki/SupportForPython3X http://code.google.com/p/modwsgi/wiki/ChangesInVersion0300
IPy python-IPy 0.73 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
gedit
gdb
luma Depend on other packages, which have to migrate to py3k
bugzilla python-bugzilla
devtools python-tg-devtools
genshi python-genshi experimental py3k branch announced http://groups.google.com/group/genshi/browse_thread/thread/abe214a973b43c84
enum python-enum
fedora python-fedora
migrate python-migrate
paste.deploy python-paste-deploy
paste.script python-paste-script
py python-py 1.3.0 has "...improved compatibility with Python3..."
repoze.tm 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
repoze.who.plugins.sa 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
django Django http://wiki.python.org/moin/PortingDjangoTo3k - 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
libvirt libvirt-python Porting has not yet started
libxml2 libxml2-python Porting doesn't seem to have started
MySQLdb MySQL-python As of 2011-07-25, http://pypi.python.org/pypi/MySQL-python/ 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 http://pylonshq.com/project/pylonshq/ticket/425
wx wxPython As of 2010-02-03, appears not to be ported yet; see http://stackoverflow.com/questions/720806/wxpython-for-python-3-0
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
BeautifulSoup python-BeautifulSoup 3.1.0 adds Python 3 support, but reportedly doesn't work as well as 3.0.8 (See http://www.crummy.com/software/BeautifulSoup/3.1-problems.html http://groups.google.com/group/beautifulsoup/browse_thread/thread/f24882cc17a0625e and http://stackoverflow.com/questions/149585/beautifulsoups-python-3-compatibility ). However, beautifulsoup4 (see above) adds Python 3 support
dbus dbus-python rhbz 538616 python 3 requires using gdbus through introspection.
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