[Fedora-packaging] How to handle py2/py3 scripts under /usr/bin

Bohuslav Kabrda bkabrda at redhat.com
Fri Mar 1 10:30:32 UTC 2013


----- Original Message -----
> On Fri, Mar 01, 2013 at 03:11:05AM -0500, Bohuslav Kabrda wrote:
> > ----- Original Message -----
> > > Dear list,
> > > 
> > > Django is a python based web-framework. The latest version 1.5
> > > was
> > > released a few days ago, introducing compatibility to python 2
> > > and
> > > python 3. It also carries one script to be installed into
> > > /usr/bin/django-admin,
> > > 
> > > The question here is now: How to handle that? Should that be the
> > > py2
> > > version, py3 now, use an additional name for the py3 version?
> > > Using
> > > alternatives was also a proposal?
> > > --
> > > Matthias Runge <mrunge at matthias-runge.de>
> > >                <mrunge at fedoraproject.org>
> > 
> > I'd advise going with the standard solution that can be found in
> > most of the other packages, e.g. py.test or nose. In django's
> > case:
> > django-admin-%{python2_version} # currently expands to "-2.7"
> > django-admin-%{python3_version} # currently expands to "-3.3"
> > django-admin # points to "-2.7" version
> > When we switch to Python 3 as a default, we just flip django-admin
> > to point to the 3.x version.
> > 
> Actually.... it depends on the use case.
> 
> If one tool will operate on either code base then you only install
> one
> binary.  This would be the case if django-admin can work with django
> apps
> written in python2 or python3.  An example of this would be rst2html
> from
> python-docutils.  The package maintainer can choose whether the
> python2 or
> the python3 version should be the installed version.  Some criteria:
> level
> of upstream support for one or the other.  Whether it's more likely
> that the
> user will have python2 or python3 installed on their system.  At
> present,
> because yum is installed on everything we call Fedora you should
> likely use
> the python2 version unless upstream heavily favors the python3
> versions of
> the tools.
> 
> OTOH, if the tool needs to use the same python interpreter as the
> code it's
> helping to manage then you need to be able to parallel install both
> versions.  Bohuslav;s explanation is pretty much correct.  The
> naming,
> however, should be python3-django-admin.  The applications which name
> themselves Foo-2.7 and Foo-3.3 occur when upstream has adopted this
> naming
> convention.  They are somewhat of a pain as when you use them in a
> spec file
> you need to use both the MAJOR and MINOR python version numbers
> (which, when
> the spec supports multiple fedora versions means you must ues
> %{python3_version}.  By contrast, python3-foo can simply be hardcoded
> in as
> we don't support multiple python3 interpreters on a single release.
> 

Well, there is a slight problem here, I think.
The first command that you usually run is django-admin startproject, which creates a project with manage.py script. Then it is standard (at least for me) to use just the manage.py script (works almost the same way as django-admin script). I think that this script should have a shebang containing the interpreter that django-admin was run with (e.g. run with python2, you will get python2 in shebang, same for python3). That would probably imply having both django-admin and python3-django-admin, right?
The problem is, that this doesn't happen and the created manage.py always has just "python". I consider this to be a bug and I'll probably bring it up to upstream. What do you think?

> Without an actual django project to work against, I cannot tell which
> of
> these is the actual case here.  Most of the subcommands of
> django-admin look
> like they could would work with either a python3 or a python2 django.
>  But
> certain ones (shell) look like they might only work if the
> interpreter
> matches and others (sql, runserver) look as though it would depend on
> django-admin was coded.
> 
> Note that the python guidelines go into this issue quite extensively:
> https://fedoraproject.org/wiki/Packaging:Python#Executables_in_.2Fusr.2Fbin
> 
> -Toshio
> 
> --
> packaging mailing list
> packaging at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/packaging

-- 
Regards,
Bohuslav "Slavek" Kabrda.


More information about the packaging mailing list