"from __future__ imports must occur at the beginning of the file": what defines the beginning of the file?

45,832

... which seems to be in contradiction with the second example I gave.

No, because those are not comments, they are strings.

The first string is elided from the code as a docstring, but the second string becomes a statement in the code consisting of the string itself. __future__ imports must be before all code-relevant lines, even those that have no effect.

Share:
45,832
Franck Dernoncourt
Author by

Franck Dernoncourt

Updated on November 02, 2020

Comments

  • Franck Dernoncourt
    Franck Dernoncourt over 3 years

    The Python script

    '''
    a
    '''
    
    from __future__ import print_function
    

    works well (i.e., does nothing), but

    '''
    a
    '''
    
    '''
    b
    '''
    from __future__ import print_function
    

    causes:

    File "C:\test.py", line 8
        from __future__ import print_function
    SyntaxError: from __future__ imports must occur at the beginning of the file
    

    Why?


    https://docs.python.org/2/reference/simple_stmts.html#future says that:

    A future statement must appear near the top of the module. The only lines that can appear before a future statement are:

    • the module docstring (if any),
    • comments,
    • blank lines, and
    • other future statements.

    The second example only contains comments and blank lines before the from __future__ import print_function, and yet it doesn't work.

    I use Python 2.7.