With reference to the guidelines for Python packaging found here:

https://fedoraproject.org/wiki/Packaging:Python

Specifically the material concerning executables in /usr/bin.

In the "Example common spec file" section is this comment.

# Must do the python2 install first because the scripts in /usr/bin are
# overwritten with every setup.py install, and in general we want the
# python3 version to be the default.

But this does not work if you only install the python2-XXX package instead of both the python2-XXX and python3-XXX packages. Here is why.

distutils will adjust the shbang interpreter line in installed scripts to be interpreter specific, e.g. you get one of:

#!/usr/bin/python2

or

#!/usr/bin/python3

But the guidelines require the py3 version of the script in the py2 package. Thus if you install just the python2-XXX package you'll end up with a script that runs the /usr/bin/python3 interpreter whose sys.path only includes library locations for py3! Thus the script cannot execute because it's missing its libraries (because the libraries were installed in the py2 locations).

How is this supposed to be addressed?

One possible workaround is to add a requirement on the py3 package in the py2 package. But that is silly because it completely negates everything in the py2 package (everything will run as if it were py3 after installing the py2 package and the py2 files will never be referenced).

Perhaps the issue is better rephrased as "How does one package Python when there are no version specific differences/requirements?" If this is covered in the guidelines it's not obvious and needs clarification. I assume this means using the generic %{_python} macros instead of dual use of the version specific macros so that everything corresponds to the system default version of Python. Correct?



--
John
_______________________________________________
python-devel mailing list
python-devel@lists.fedoraproject.org
https://lists.fedoraproject.org/admin/lists/python-devel@lists.fedoraproject.org

Reply via email to