【问题标题】:error with importing sage into a python file将 sage 导入 python 文件时出错
【发布时间】:2018-10-06 21:29:33
【问题描述】:

我试图在 python 文件中导入一个 sage 包(var)

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

我的猜测是问题与环境路径有关。但即使

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

没用

似乎一些环境变量的值有问题,如“SAGE_ROOT”和......但根据installation manual,如果我设置了符号链接

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

然后自动处理所有必需的环境变量。

这个模块是从 django views.py 调用的,它也作为 Sage 包安装。如果我运行模块 使用

sage test.py

一切正常,但是当从 django 视图调用它时,它也作为 sage 包安装,我得到了提到的错误

如果有人可以帮助我,我会很高兴,因为我正在做一个重要的项目,我真的需要使用 sage。

【问题讨论】:

  • 你没有得到ImportError,所以我认为这不是路径问题。您是否设置了所需的 Sage 环境变量?
  • @JohnGordon。你能解释一下我该怎么做吗?根据安装指南。 doc.sagemath.org/html/en/installation/… 。只需要创建硬链接。

标签: python django environment-variables ubuntu-16.04 sage


【解决方案1】:

我在从 djagno 视图函数调用的 python 文件中设置了环境变量。它解决了。您需要设置以下变量:

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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-05
    • 2012-11-01
    • 2015-09-09
    • 2022-12-10
    • 2017-01-16
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多