J'ai installé python2.7 et pyhton3.5 avec apt-get.
Dans mon .bashrc, j'ai alias python=python3
pour faire de python3 la valeur par défaut. Cela fonctionne si je lance simplement python, mais cela ne semble pas fonctionner avec/usr/bin/env.
Comment puis-je forcer python3 dans ce cas?
$ python --version
Python 3.5.2
$ /usr/bin/env python --version
Python 2.7.12
En effet, env
recherche python
dans votre PATH
et non dans un shell, un alias ou une fonction. Comme vous avez défini python
comme python3
comme alias, env
ne le trouvera pas, il effectuera une recherche dans PATH
et résoudra python
en /usr/bin/python
(qui est python2
).
Vous pouvez vérifier tous les emplacements disponibles de l'exécutable python
name__, dans bash
name__, faites ce qui suit:
type -a python
Si vous voulez utiliser un alias dans Shebang, vous n'avez aucune chance. Par définition, Shebang doit être un chemin complet vers l'exécutable de l'interpréteur, auquel env
doit résoudre python
lorsque vous utilisez /usr/bin/env python
. Pour interpréter le script en utilisant python3
, utilisez le Shebang:
#!/usr/bin/env python3
Étant donné le nombre de scripts appelant/usr/bin/env python qui attendent python 2, il est probablement une mauvaise idée que python soit réellement python 3.
Comme l'a dit Benny dans un commentaire, /usr/bin/env python3
est la bonne solution.