2012-07-14 16 views
6

mogę umieścić:Jak zmusić cały mój pakiet do zastosowania dyrektywy __future__?

from __future__ import absolute_import 

wewnątrz __init__.py na najwyższym poziomie dir na moim opakowaniu oraz Gwarantujemy, że absolute_import zostaną zastosowane do całego kodu, który działa wewnątrz tego pakietu lub pakietów podrzędnych?

Czy powinienem umieścić tę dyrektywę w każdym modelu, który dokonuje bezwzględnego importu?

Utrzymuję pakiet Pythona i staram się, aby mój kod był jak najłatwiejszy do migracji do Python3, gdy nadejdzie czas. Nie mogę tego zrobić od razu, ponieważ moje zależności nie są jeszcze w Python3.

+0

"2to3" naprawi je dla Ciebie, gdy będziesz chciał się zmienić. – katrielalex

+3

@katrielalex: Gdzie "fixing" oznacza "usuwanie", co nie byłoby nawet konieczne, ponieważ Python 3 po prostu ignoruje wszystkie aktualne importowane '__future__'. –

+0

Zauważ, że od wersji Python 3.5, po raz pierwszy od Pythona 2.6, wprowadzono nową dyrektywę '__future__'' generator_stop'. [Patrz PEP 479] (https://www.python.org/dev/peps/pep-0479/). – gerrit

Odpowiedz

8

Nie, __future__ import są ważne tylko dla jednego pliku. Będziesz musiał umieścić ten wiersz na górze każdego pliku źródłowego Pythona.

Z documentation:

Przyszły oświadczenie jest dyrektywa kompilator, że dany moduł powinien być skompilowany z użyciem składni lub semantyki, które będą dostępne w określonym przyszłych wersjach Pythona.

Powiązane problemy