2013-10-19 42 views
3

我將IPython設置爲在啓動時自動加載Sympy並配置它的輸出方法。然而,無論我嘗試我不能sympy初始化latex/unicode樣式輸出打印。採取配置Sympy啓動顯示輸出

步驟:

ipython3 create profile sympy 
# this is where the profile was created 
cd ~/.config/ipython/profile_sympy/startup 
gedit 00-startup.py 
# add some content (below) 
sudo chmod a+x 00-startup.py 

啓動腳本:

import sympy 
sympy.init_printing(use_unicode=True) 

當我啓動IPython的,它不顯示 「適合打印」 輸出:

ipython3 
sympy.sqrt(8) 

輸出:

2*sqrt(2) 

使用qtconsole/notebook的類似輸出。

如果我再次運行init_printing命令,漂亮的打印顯示適用於該內核實例。此外,我知道啓動腳本正在正常運行,因爲我可以添加打印語句並獲取輸出(另外,軟件包已導入並可供使用)。

我在64位Ubuntu 13.10上安裝sympy 0.7.3,ipython3 1.1,matplotlib 1.3.1,numpy 1.7.1,scipy 0.12.0。

順便說一句,運行與PYTHONSTARTUP設置爲運行相同的啓動腳本的普通python3終端將適當漂亮的打印Sympy輸出。

+0

爲什麼不使用預定義的sympy配置文件?隨着ipython2 1.1.0'ipython notebook --profile sympy'開箱即用的乳膠打印。 – Jakob

回答

3

爲了迴應Jakob的評論,ipython3 1.1.0仍然使用交互式sympy模塊,而不是sympy 0.7.3的init_printing,理論上它可以很好地工作,除非我在開​​始時得到令人討厭的警告輸出。我也不太熱衷於將sympy中的所有內容導入全局命名空間,這是sympy配置的捆綁(以及定義一些變量)。

但是,建議並幫助我找到一個解決:

而不是把我的啓動代碼爲00-startup.py,我修改了ipython_config.py文件在啓動時執行額外的線路:

c.InteractiveShellApp.exec_lines = [''' 
import sympy 
sympy.init_printing(use_latex=True) 
'''] 

我m不確定這是否是sympy或ipython中的錯誤,但是這個選項當然有用。

+0

當前的IPython master使用sympy.init_printing方法和sympy配置文件,但是我同意'來自sympy import *'對於可靠的使用來說太多了。 – Jakob

+0

我的猜測是use_latex檢查它是否在筆記本中,但由於啓動腳本的工作方式,它在運行時並不會注意到它在筆記本中。明確設置'use_latex = True'聽起來像是解決這個問題的好方法。 – asmeurer

+0

如果我明確地設置了use_latex,它並不是很重要,事實上從啓動文件夾中的腳本運行init_printing沒有任何作用,但在ipython_config.py中使用它就可以。正確處理導入以及啓動腳本中的其他語句(如print())。 – helloworld922