Ask Your Question
0

error with importing sage into a python file

asked 6 years ago

nimaous gravatar image

updated 6 years ago

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.

Preview: (hide)

2 Answers

Sort by » oldest newest most voted
0

answered 6 years ago

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.

Preview: (hide)
link

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 ( 6 years ago )
0

answered 6 years ago

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
Preview: (hide)
link

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: 6 years ago

Seen: 2,148 times

Last updated: Oct 08 '18