Subject: bug#30437: No “.guix-profile/bin/python” after ‘guix package -i python’

From: Mathieu Lirzin <[email-masked]>
Date: Tue, 13 Feb 2018 01:45:42 +0100

Ricardo Wurmus <[email-masked]> writes:

> Mathieu Lirzin <[email-masked]> writes:
>
>> Danny Milosavljevic <[email-masked]> writes:
>>
>>> On Mon, 12 Feb 2018 17:52:41 +0100
>>> Mathieu Lirzin <[email-masked]> wrote:
>>>
>>>> I think it would work better if when installing python@3, a ‘python’
>>>> executable would be available in the PATH.  Maybe there is a technical
>>>> reason for not doing so, but I find its absence rather confusing.
>>>
>>> For backward compatibility, the 'python' executable always has to be Python 2.
>>>
>>> A lot of old scripts specify just "/usr/bin/env python" in the shebang.
>>>
>>> On the other hand if your script supports Python 3 you know it.
>>
>> Hum, then I don't understand why we aren't applying this argument to
>> every interperter (Perl, Guile, ...) which introduce backward
>> incompatible changes?
>
> As far as I know, the Python 3 package does not provide the “python”
> binary.  That’s upstream’s decision.

Indeed your are right, they provide no configure option to enable such
thing as they don't encourage downstream to use ‘python’ as an alias to
‘python3’ yet.  After some research this is discussed in PEP-0394. [1]

As a consequence it seems reasonable for Guix to not deviate from
upstream recommandation, even if the shebang issue described by PEP-0394
are mitigated by the functional package management paradigm.

Thanks.

[1] https://www.python.org/dev/peps/pep-0394/

-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37