Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Error importing ZZ

I'm trying to switch to a more software-development-like approach for one of my projects. To this end I'll be writing several files, and I'll be trying to keep imports to a minimum to speed up module loading.

At first I started with a file foo.sage and a Makefile which preparses this using sage -min -preparse foo.sage. But the resulting foo.sage.py still starts with from sage.all_cmdline import *. I thought the point of the -min switch was to avoid just that. Am I missing something here?

Next I tried to write Python code instead. But there I got problems, apparently because I was loading modules in the wrong order. Take for example a file foo.py containing just the line from sage.rings.integer_ring import ZZ. My Sage 7.4 on Gentoo will print the following when running said file as sage foo.py:

Traceback (most recent call last):
  File "foo.py", line 1, in <module>
    from sage.rings.integer_ring import ZZ
  File "sage/rings/integer.pxd", line 7, in init sage.rings.integer_ring (…/rings/integer_ring.c:14426)
  File "sage/rings/rational.pxd", line 8, in init sage.rings.integer (…/rings/integer.c:49048)
  File "sage/rings/fast_arith.pxd", line 3, in init sage.rings.rational (…/rings/rational.c:36533)
  File "sage/libs/pari/gen.pxd", line 5, in init sage.rings.fast_arith (…/rings/fast_arith.c:8139)
  File "sage/libs/pari/gen.pyx", line 91, in init sage.libs.pari.gen (…/libs/pari/gen.c:135191)
  File "/usr/lib64/python2.7/site-packages/sage/rings/infinity.py", line 228, in <module>
    from sage.rings.integer_ring import ZZ
ImportError: cannot import name ZZ

Is there a way to reasonably import things like this without too much experimentation, and without importing far more than I actually need here?