Ask Your Question
0

error with importing sage into a python file

asked 2018-10-06 23:31:57 +0100

nimaous gravatar image

updated 2018-10-07 19:38:19 +0100

Im trying to import a sage package (var) in a python file

from sage.all import var

but when run the file Im getting this error :

Error
Traceback (most recent call last):

    execfile("/home/sagefolder/SageMath/myapp/core/test.py")
  File "/home/sagefolder/SageMath/ubbr/engine/test.py", line 20, in <module>
    from sage.all import var
  File "/home/sagefolder/SageMath/local/lib/python2.7/site-packages/sage/all.py", line 71, in <module>
    from sage.env import SAGE_ROOT, SAGE_SRC, SAGE_DOC_SRC, SAGE_LOCAL, DOT_SAGE, SAGE_ENV
  File "/home/sagefolder/SageMath/local/lib/python2.7/site-packages/sage/env.py", line 123, in <module>
    _add_variable_or_fallback('SAGE_ETC',        opj('$SAGE_LOCAL', 'etc'))
  File "/home/sagefolder/SageMath/local/lib/python2.7/site-packages/sage/env.py", line 103, in _add_variable_or_fallback
    value = sep.join(components)
TypeError: sequence item 0: expected string, NoneType found

my guess was that the problems was related to the env path. but even

sys.path.append('/path/to/the/sage/')

it does not work

It seems it has problem with the value of some env variables like 'SAGE_ROOT' and ... but according to the http://doc.sagemath.org/html/en/installation/binary.html#sec-installation-from-binaries (installation manual), if I set the symbolic link

ln -s /path/to/SageMath/sage /usr/local/bin/sage

then all the required env variable are automatically handled.

this module is called from a django views.py which is also installed as a Sage package. if I run the the module using

sage test.py

everything is ok but when it is called from a django view which is also installed as sage packages I got the mentioned error

I would be pleased if anybody can help me as Im doing an important project and I really need to use sage.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
0

answered 2018-10-07 14:34:57 +0100

eric_g gravatar image

A solution is run Sage's Python (instead of your system's Python):

sage -python

Equivalently, you can run Python from Sage shell:

sage -sh
python

Then all Sage's environment variables are automatically set and from sage.all import var does not give any error.

edit flag offensive delete link more

Comments

thank you for your answer. Indeed Im calling this python module in a Django views.py. actually I'v installed django as a Sage package but it seems there are some problems with Sage env variables.

nimaous gravatar imagenimaous ( 2018-10-07 19:32:14 +0100 )edit
0

answered 2018-10-08 10:06:35 +0100

nimaous gravatar image

I set the env variables in the python file which is called from djagno views function. and it's solved. you need to set the following variables:

import os
os.environ['SAGE_ROOT'] = 'you can find this path by running os.environ['SAGE_ROOT'] in sage shell 
os.environ['SAGE_SRC'] = 'you can find this path by running os.environ['SAGE_ROOT'] in sage shell 
os.environ['SAGE_DOC_SRC'] = 'you can find this path by running os.environ['SAGE_ROOT'] in sage shell 
os.environ['SAGE_LOCAL'] = 'you can find this path by running os.environ['SAGE_ROOT'] in sage shell 
os.environ['DOT_SAGE'] = 'you can find this path by running os.environ['SAGE_ROOT'] in sage shell
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2018-10-06 23:31:57 +0100

Seen: 1,944 times

Last updated: Oct 08 '18