如何在交互模式下运行Sage之前将脚本传递给它?

5
在我的Python工作流中,我通常使用-i标志来打开一个Python解释器,它首先执行我正在工作的脚本,然后允许我与之交互。例如,在test.py中:
#!/usr/bin/env python
print("Hello World")
x=2

当我在命令行中运行python -i test.py时,我收到以下输出:
Hello World!
>>> 

交互模式已启用,但脚本中定义的所有内容都对我可用。键入x将生成2

是否有类似Sagemath的过程?我尝试了-c标志,但命令sage -c“attach('test.sage')”在加载我正在使用的模块后无法进入交互模式。

理想情况下,会有一个比使用expect更简单的解决方案,但如果确实是最佳解决方案,那么如何使用expect来使Sagemath在加载特定文件后开始交互会话?

3个回答

2

你可以为每个交互式的Sage会话创建一个名为init.sage的启动文件。请参阅此FAQ此文档。这是你要找的吗?你是对的,sage -c只计算。


0

我不确定以前你能否通过它,但你仍然可以在Sage控制台内完成它。

sage: load("<path-file>")

0

Sage运行时会为您的Sage脚本生成一个带有Sage包装器的Python脚本。例如,您可以从script.sage生成script.sage.py

在Sage的交互模式下,它会运行一个定制的IPython解释器(请参见Sage Interactive shell),您可以使用以下命令运行Python脚本:

sage: %run script.sage.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接