web-dev-qa-db-fra.com

Par défaut, python3 pour '/ usr / bin / env python'

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
7
r03

En effet, envrecherche pythondans votre PATHet non dans un shell, un alias ou une fonction. Comme vous avez défini pythoncomme python3 comme alias, envne le trouvera pas, il effectuera une recherche dans PATHet résoudra pythonen /usr/bin/python (qui est python2).

Vous pouvez vérifier tous les emplacements disponibles de l'exécutable pythonname__, dans bashname__, 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 envdoit résoudre pythonlorsque vous utilisez /usr/bin/env python. Pour interpréter le script en utilisant python3, utilisez le Shebang:

#!/usr/bin/env python3
9
heemayl

É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.

2
Hack Saw