2014-02-23 26 views
4

如果你熟悉Matlab,你知道你可以使用定義文件中的任何已定義函數,如果它在工作區路徑中,則不需要調用或導入。
ipython是否有任何機制模仿matlab的行爲。我目前的工作流程是將代碼寫入Sublime文本並粘貼到ipython(看起來很愚蠢)。你會建議任何其他方式來實現高效如何在ipython控制檯中輸入python代碼文件?

我懶得這樣做,但以某種方式在Ipython的啓動文件中定期自動導入代碼可能會工作。也許ipython館長會考慮這個。

+0

+1。與Matlab相比,這似乎是Python的最大不便之處。 –

+0

關鍵的區別在於(傳統的)Matlab在文件和函數之間有1對1的匹配。在Python中,一個文件包含一個模塊,它可以有很多功能。對於小型項目的交互式工作,Matlab方法很方便。但是這使得管理大型項目變得更加困難。多年來,Mathworks(和Octave)以各種方式放寬了1-1相關性。 – hpaulj

+0

@Erogol,看看[ipython notebook](http://ipython.org/notebook.html)。它更接近於Matlab所用的交互式工作風格,但同時它比Matlab控制檯功能強大得多。 –

回答

0

如果你正在運行在您的工作空間Python解釋器,你可以導入文件:

/path/to/workspace$ ls 
some_files youtube.py  other_files 

/path/to/workspace$ python 
Python 2.7.3 (default, Dec 18 2012, 13:50:09) 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import youtube 
# I know there's a method get_video_thumbnail in my file 
>>> youtube.get_video_thumbnail('http://youtu.be/IAooXLAPoBQ') 
'http://img.youtube.com/vi/IAooXLAPoBQ/hqdefault.jpg' 
>>> youtube.NO_PREVIEW 
'/static/img/no_preview.png' 
>>> # etc. 

如果編輯的Python文件,您可以重新導入,它將覆蓋模塊命名空間和其內容在翻譯。

+0

,但在這種情況下,源文件中的更改不會實時影響解釋器。很可能,我需要重新導入模塊。 – erogol

+0

@Erogol是的,你需要再次寫入'import'。但是現在我沒有更好的解決方案:) –

+1

如果編輯模塊,則可能需要調用reload(youtube)。 – moorepants

1

我想你將不得不在每次代碼更改時重新導入你的模塊。 在每次函數調用之前,您都可以使用from my_module import *來避免模塊名稱,儘管此構造運行緩慢。

0

我很驚訝沒有人建議使用%edit魔術功能。

another answer我給了同一主題,如果你設置崇高成爲你的編輯器,你可以簡單地運行:

In [72]: %ed somefile.py 

在保存&接近,IPython中會自動執行該文件中包含的代碼 - 所以不是複製/粘貼,而是讓IPython發揮它的魔力。

我從來沒有使用崇高,所以我不知道如何工作。作爲替代,您可以查看LightTable如何與IPython進行通信,併爲此寫入Sublime擴展。

相關問題