我设置了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)
它会打印积分。
因此从文件运行永远不会打印任何符号数学,但手动在控制台中输入?
任何人都可以帮助解决这个问题 - 也许是某种配置?
谢谢!
答案 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
获得精美的格式化输出。