Most Python files should include the following boilerplate at the top of the file, right after the comment header:
from __future__ import (absolute_import, division, print_function)
This uses Python 3 semantics for absolute versus relative imports, division, and print. By doing this, we can write code which is portable between Python 2 and Python 3 by following the Python 3 semantics.
When Python 2 encounters an import of a name in a file like
import copy it attempts to load
copy.py from the same directory as the file is in. This can cause problems if there is a python
file of that name in the directory and also a python module in
sys.path with that same name. In
that case, Python 2 would load the one in the same directory and there would be no way to load the
sys.path. Python 3 fixes this by making imports absolute by default.
sys.path. If you want to import
copy.py from the same directory,
the code needs to be changed to perform a relative import:
from . import copy.
In Python 2, the division operator (
/) returns integer values when used with integers. If there
was a remainder, this part would be left off (aka, floor division). In Python 3, the division
/) always returns a floating point number. Code that needs to calculate the integer
portion of the quotient needs to switch to using the floor division operator (//) instead.
In Python 2,
python:print() is a keyword. In Python 3,
python3:print() is a function with different
parameters. Using this
__future__ allows using the Python 3 print semantics everywhere.