ошибка при импорте sage в файл python - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь импортировать пакет sage (var) в файл Python

from sage.all import var 

, но при запуске файла я получаю эту ошибку:

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

Я предполагаю, чтопроблемы были связаны с путем env.но даже

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

это не работает

Кажется, у него есть проблема со значением некоторых переменных env, таких как 'SAGE_ROOT' и ..., но согласно руководству по установке , если я установлю символическую ссылку

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

, тогда все необходимые переменные env будут обработаны автоматически.

этот модуль вызывается из django views.py, который также устанавливается как пакет Sage.если я запускаю модуль, используя

sage test.py

, все в порядке, но когда он вызывается из представления django, которое также устанавливается в виде пакетов sage, я получаю упомянутую ошибку

, я был бы радесли кто-нибудь может помочь мне, так как я делаю важный проект, и мне действительно нужно использовать шалфей.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Я установил переменные env в файле python, который вызывается из функции представлений djagno.и это решено.вам нужно установить следующие переменные:

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 
0 голосов
/ 07 октября 2018

Проверьте, что есть часть sage.all, которая называется var, и попробуйте изменить sys.path.append('/path/to/the/sage/') на sys.path.append("path\\to\\the\\sage")

. Пожалуйста, также предоставьте код в контексте.

...