Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

"from __future__ import print_function" fails on Sage scripts

Hello, Sage Community.

I am trying to use the "print" function in a .sage script, so I have added the line

from __future__ import print_function

as the first line to be included in my .sage file. Unfortunately, when running sage test.sage, Sage preparses the document and creates an auxiliary file "test.sage.py", which makes an import, then predefines some constants, and finally adds my preparsed code. As a consequence, the from __future__ import print_function is not the first line, and I get the following error message:

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

Of course, I could manually add this line to the .sage.py file and then execute it, but this could be tedious in my case for two reasons: 1. I have a lot of files which I have to modify and rerun every 15 minutes. 2. I also need this process to be automatic to be able to execute it with automatically generated script and even sageTeX.

Thanks in advance for your answers!

"from __future__ import print_function" fails on Sage scripts

Hello, Sage Community.

I am trying to use the "print" function in a .sage script, so I have added the line

from __future__ import print_function

as the first line to be included in my .sage file. Unfortunately, when running sage test.sage, Sage preparses the document and creates an auxiliary file "test.sage.py", which makes an import, then predefines some constants, and finally adds my preparsed code. As a consequence, the from __future__ import print_function is not the first line, and I get the following error message:

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

Here is a MWE. The file "test.sage" containing:

from __future__ import print_function
print(1+1)

is preparsed to "test.sage.py" containing:

# This file was *autogenerated* from the file test.sage
from sage.all_cmdline import *   # import sage library

_sage_const_1 = Integer(1)
from __future__ import print_function

print(_sage_const_1 +_sage_const_1 )

Of course, I could manually add this line to the .sage.py file and then execute it, but this could be tedious in my case for two reasons: 1. I have a lot of files which I have to modify and rerun every 15 minutes. 2. I also need this process to be automatic to be able to execute it with automatically generated script and even sageTeX.

Thanks in advance for your answers!