Le Python par défaut de macOS va nous quitter

Ce billet date de plusieurs années, ses informations peuvent être devenues obsolètes.

Les release notes de la beta de macOS 10.15 annoncent que les langages de script Python, Ruby, et Perl ne seront plus inclus par défault dans le système :

Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app. (49764202)

C'est plutôt une bonne nouvelle, en partie parce que la version embarquée par défaut est toujours une variante de Python 2 dont la période de maintenance prendra fin en 2020.

Actuellement certains langages de script sont embarqués dans macOS en tant que frameworks. Ces derniers sont un concept architectural clé de Darwin et un héritage de NeXTSTEP. Vous trouverez la plupart d'entre eux dans ces endroits du système de fichiers :

  • /System/Library/Frameworks
  • /System/Library/PrivateFrameworks

Le gros de leur code n'est pas ouvert, ce sont des choses qui arrivent avec Apple :)

Pourtant, l'emplacement de Python est indiqué dans /usr/bin/ (probablement pour pouvoir honorer le shebang Unix) :

which python
/usr/bin/python

Mais l'exécutable /usr/bin/python ne pèse pas très lourd : 65K chez moi.

Il s'agit en fait d'un simple wrapper Mach-O : file `which python`.

Le "vrai" Python embarqué par l'OS se trouve parmi les frameworks : /System/Library/Frameworks/Python.framework/Versions/Current/bin/python.

Évidemment comme tous les gens bien, vous avez installé vos différentes versions de Python 3 avec MacPorts car vous savez qu'une bonne partie du kernel XNU est empruntée à BSD et que dans MacPorts il y a Ports. Homebrew, c'est pour les pinpins qui pensent que sudo c'est le mal :D

Ce qui est vraiment fun dans tout ça, c'est qu'à peu près au même moment, un billet de Microsoft annonce que Windows 10 va embarquer Python. Funny, isn't it? :D

On en parle ailleurs : Apple to Deprecate Scripting Languages in Future Versions of macOS.

Avant Héritage contre composition Après Voir le contenu des volumes nommés de Docker for Mac

Tag Kemar Joint