Spyder SymPy不会打印符号数学

时间:2014-06-02 18:00:38

标签: sympy symbolic-math spyder

我设置了Anaconda 2.0.0(Win 64)。 它有SymPy 0.7.5。

我配置Spyder(Anaconda附带的2.3.0rc)使用符号数学:

工具>偏好> iPython控制台>高级设置>符号数学

我创建了一个新项目和一个新文件:

# -*- coding: utf-8 -*-
from sympy import *
init_printing(use_unicode=False, wrap_line=False, no_global=True)

x = Symbol('x')
integrate(x, x)

print("Completed.")

当我运行它(Python或iPython控制台)时,它不打印积分 - 它只打印已完成。

但奇怪的是,在控制台中,如果我重新输入,那么只是运行:

integrate(x, x)

它会打印积分。

因此从文件运行永远不会打印任何符号数学,但手动在控制台中输入?

任何人都可以帮助解决这个问题 - 也许是某种配置?

谢谢!

2 个答案:

答案 0 :(得分:10)

运行脚本与在IPython中执行代码不同。当您在IPython中的单元格或提示符中运行代码时,它会捕获最后一个命令的输出并将其显示给您。运行脚本时,脚本刚刚运行,显示的唯一内容是打印到屏幕上的内容。

我不认为有一种方法可以从脚本中发送IPython显示对象(这需要获得相当的乳胶输出),但我可能会误解spyder如何在IPython中执行代码,或者丢失它有一些钩子。你可以尝试

from IPython.display import display
display(integrate(x, x))

答案 1 :(得分:3)

因为integrate不会自动打印,所以只返回输出。您必须将其传递给print函数才能获得输出。尝试使用以下代码:

# -*- coding: utf-8 -*-
from sympy import *
init_printing(use_unicode=False, wrap_line=False, no_global=True)
x = Symbol('x')
print(integrate(x, x))
print("Completed.")

在Python控制台(或IPython控制台)中,会自动打印返回的语句。

更新:使用pprint获得精美的格式化输出。