Antes de tudo, from __future__ import print_function
precisa ser a primeira linha de código no seu script (além de algumas exceções mencionadas abaixo). Segundo, como outras respostas disseram, você deve usar print
como uma função agora. Esse é o ponto principal de from __future__ import print_function
; para trazer a print
função do Python 3 para o Python 2.6+.
from __future__ import print_function
import sys, os, time
for x in range(0,10):
print(x, sep=' ', end='') # No need for sep here, but okay :)
time.sleep(1)
__future__
As instruções precisam estar próximas à parte superior do arquivo, pois alteram coisas fundamentais sobre o idioma e, portanto, o compilador precisa conhecê-las desde o início. A partir da documentação :
Uma declaração futura é reconhecida e tratada especialmente em tempo de compilação: As alterações na semântica das construções principais geralmente são implementadas gerando código diferente. Pode até ser que um novo recurso introduza uma nova sintaxe incompatível (como uma nova palavra reservada); nesse caso, o compilador pode precisar analisar o módulo de maneira diferente. Tais decisões não podem ser adiadas até o tempo de execução.
A documentação também menciona que as únicas coisas que podem preceder uma __future__
declaração são as instruções do módulo, comentários, linhas em branco e outras declarações futuras.