Unfortunately "import_statements" does not seem to give enough information
for sage to work correctly.
E.g. using
from sage.combinat.root_system.weyl_group import WeylGroup
inside a script yields
File "<..>/sage/src/sage/combinat/root_system/weyl_group.py", line 43, in <module>
from sage.groups.matrix_gps.finitely_generated_gap import FinitelyGeneratedMatrixGroup_gap
File "<..>/sage/src/sage/groups/matrix_gps/finitely_generated_gap.py", line 36, in <module>
from sage.rings.polynomial.multi_polynomial_sequence import PolynomialSequence
File "<..>/sage/src/sage/rings/polynomial/multi_polynomial_sequence.py", line 173, in <module>
from sage.rings.polynomial.plural import NCPolynomialRing_plural
File "sage/rings/polynomial/plural.pyx", line 1, in init sage.rings.polynomial.plural
File "sage/rings/polynomial/multi_polynomial_libsingular.pyx", line 1, in init sage.rings.polynomial.multi_polynomial_libsingular
File "sage/libs/singular/function.pyx", line 95, in init sage.libs.singular.function
ImportError: cannot import name PolynomialSequence_generic
It does work interactively so there must be some difference between invoking sage interactively and non interactively...
I assume a bunch of environment variables must be set correctly. Is there a good way to do this?