Padrão para python3 para '/ usr / bin / env python'

3

Eu instalei python2.7 e pyhton3.5 com o apt-get.
No meu .bashrc eu tenho alias python=python3 para tornar python3 o padrão. Isso funciona se eu simplesmente executar python diretamente, mas não parece funcionar com / usr / bin / env.

Como posso forçar o python3 nesse caso?

$ python --version
Python 3.5.2
$ /usr/bin/env python --version
Python 2.7.12
    
por r03 26.08.2016 / 21:53

2 respostas

7

Isso porque env está pesquisando python no seu PATH , não em qualquer shell incorporado, ou alias ou função. Como você definiu python como python3 como um alias, env não o encontrará, pesquisará PATH e resolverá python a /usr/bin/python (que é python2 ). / p>

Você pode verificar todos os locais disponíveis do executável python , em bash , do:

type -a python

Você está sem sorte se quiser usar um alias no shebang, pois, por definição, shebang precisa ser um caminho completo para o executável do interpretador, que o env deve resolver python para quando você usa /usr/bin/env python . Para interpretar o script usando python3 use o shebang:

#!/usr/bin/env python3
    
por heemayl 26.08.2016 / 22:11
2

Dado o número de scripts que chamam / usr / bin / env python esperando por python 2, provavelmente é uma má idéia ter Python na verdade sendo python 3.

Como Benny disse em um comentário, /usr/bin/env python3 é a solução certa.

    
por Hack Saw 26.08.2016 / 22:03