gpt4 book ai didi

python - 如何正确导入鼠尾草?

转载 作者:太空狗 更新时间:2023-10-30 01:38:08 24 4
gpt4 key购买 nike

编辑:我需要澄清一下,我想将 sage 作为库导入,以便在 sage shell 之外的 Python 脚本中使用,因为我需要它作为 Django 上的服务器运行。

我必须从源代码编译 sage 吗?

我一直在尝试将 sage 用于我的 python 脚本。

代码如下所示:

#!/usr/bin/env sage -python
from django.shortcuts import render
from django.http import HttpResponse
import sys
from django.http import HttpRequest
from django.template import RequestContext, loaders
from sage.all import *

def index(request):

querystring = request.GET.get('querystring')

return HttpResponse(querystring)
# Create your views here.

但是我得到一个错误:没有名为 sage.all 的模块

我没有遇到问题运行

#!/usr/bin/env sage -python
import sys
from sage.all import *
var('x')
print integrate(x,x)
print latex(integrate(sin(x),x))

从命令行使用 ./sage -python/path/to/script.py

所以我不明白为什么我不能导入鼠尾草...

“sage”目录在 python 路径中,就在我试图在其中使用它的 views.py 文件旁边,我试过将它放在各种不同的地方,或者将它附加到 sys.path 文件中。路径,无济于事。非常感谢任何帮助,这是一个非常重要的项目。我正在尝试将 Sage 导入 Django 项目。

编辑:我没有使用 ./sage -python 运行第二个,而是在我的 Django 本地主机服务器上将它作为 views.py 运行。

最佳答案

要使用 from sage.all import *,您需要在 Sage shell 中,或者至少定义了正确的内容。为确保您拥有它们,请尝试添加

from os import environ
print environ

到你的脚本。您应该得到诸如 PYTHONPATH 之类的东西和一堆特定于 Sage 的东西。因此,如果您没有像第二个示例那样使用 ./sage -python 运行它(我只是在您不这样做的情况下才这么说),那么我不知道。你会认为 shebang 行已经这样做了,但也许那些不接受争论,似乎 behavior on that is pretty variable by OS .

编辑:经过一番讨论elsewhere ,我认为问题是您正在尝试使用 Python 运行 shell 脚本。 This SO question is exactly what the doctor ordered .

为了使示例更明确,我现在有两个文件。

$ cat views
#!/usr/bin/env sage -python

from sage.all import *
print permutations(5)

$ cat views.py
import subprocess
subprocess.call(['./views'])

现在我可以将其作为普通(无 Sage shell)Python 进程运行。

$ python views.py 
./views:4: DeprecationWarning: Use the Permutations object instead.
See http://trac.sagemath.org/14772 for details.
print permutations(5)
[[1, 2, 3, 4, 5], [1, 2, 3, 5, 4], [1, 2, 4, 3, 5], [1, 2, 4, 5, 3], [1, 2, 5, 3, 4], [1, 2, 5, 4, 3], [1, 3, 2, 4, 5], [1, 3, 2, 5, 4], [1, 3, 4, 2, 5], [1, 3, 4, 5, 2], [1, 3, 5, 2, 4], [1, 3, 5, 4, 2], [1, 4, 2, 3, 5], [1, 4, 2, 5, 3], [1, 4, 3, 2, 5], [1, 4, 3, 5, 2], [1, 4, 5, 2, 3], ... , [5, 4, 3, 2, 1]]

我相信有一种更优雅的方法可以做到这一点,但现在我认为这对你来说已经足够了。顺便说一句,请确保您不授予 Controller 访问任何旧文件的权限 - 我不是安全专家。

关于python - 如何正确导入鼠尾草?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com