update
發(fā)現(xiàn)ipython notebook 灰常方便,主要是寫(xiě)一些代碼片段的時(shí)候,debug起來(lái)甚至跟pycharm有的一拼。配置好服務(wù)器版本后,,打開(kāi)瀏覽器就能用,一定程度上提升了效率,。具體如何配置ipython notebook的service可以看官網(wǎng),,值得注意的一點(diǎn)是,,如果不配置直接本地運(yùn)行的化,只能通過(guò)localhost:[port]打開(kāi),,無(wú)法遠(yuǎn)程訪問(wèn),。
寫(xiě)在前面
從本文開(kāi)始,以后都用markdown寫(xiě)作,,向大家學(xué)習(xí)~(另,,本文是一個(gè)多月前寫(xiě)的,,當(dāng)時(shí)只對(duì)終端的命令截圖了的,沒(méi)有保存文本,,現(xiàn)在也懶得在重新敲了,,第一個(gè)還是文本,其余的都是圖片,。以后代碼部分都采用該主題)
ipython現(xiàn)在幾乎是自己使用python過(guò)程中最常用的工具,。其中的一些特性很是好用,所以在這里專門用一篇來(lái)簡(jiǎn)單介紹下,。方便后面的學(xué)習(xí)和調(diào)試過(guò)程,。照例,這里給出一本值得推薦的參考書(shū),。Learning IPython for Interactive Computing and Data Visualization
安裝
本來(lái)安裝是沒(méi)什么好說(shuō)的,,sudo apt-get install
ipython就完了,但是,,很多時(shí)候我們要在不同的python版本間切換,。比如自己習(xí)慣在python3版本下工作,但是很多時(shí)候?qū)W習(xí)一些書(shū)中的例子
時(shí)使用的是python2的版本,。因此這里建議同時(shí)安裝ipython和ipython3兩個(gè)版本,。從我自己使用的情況來(lái)看,同時(shí)安裝兩個(gè)版本的
ipython并沒(méi)有沖突,,兩個(gè)版本間的安裝包是相互獨(dú)立的,,只是兩個(gè)版本的ipython會(huì)共享配置文件。需要使用python2的環(huán)境時(shí)就在終端執(zhí)行
ipython,,需要使用python3版本的時(shí)候就在終端執(zhí)行ipython3,。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | tianjun@tianjun-ASUS:~/.config/ipython$ ipython
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
Type "copyright", "credits" or "license" for more information.
IPython 1.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: exit
tianjun@tianjun-ASUS:~/.config/ipython$ ipython3
Python 3.3.2+ (default, Oct 9 2013, 14:50:09)
Type "copyright", "credits" or "license" for more information.
IPython 1.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
|
那么怎么安裝不同版本的ipython呢?
談到不同版本python的共存,,一個(gè)不可避免的問(wèn)題就是給不同的python版本安裝對(duì)應(yīng)的軟件包,。一個(gè)比較好的解決辦法是先安裝
virtualenv這個(gè)工具,然后生成一個(gè)獨(dú)立的工作目錄,,在該目錄下安裝不同版本的工具包,。但是我嫌這個(gè)每次都要切換到工作目錄下,還要執(zhí)行
activate,,比較麻煩,。所以建議分別安裝pip和pip3工具。
sudo apt-get install pip pip3
然后想安裝python2版本的軟件包就用命令
sudo pip install ipython
想安裝python3版本對(duì)應(yīng)的軟件包就用命令
sudo pip3 install ipython3
類似的,,我們可以安裝好不同python版本對(duì)應(yīng)的numpy,,scipy,matplotlib,sklearn等等。
常用功能
1. 自動(dòng)補(bǔ)全
ipython 最方便的第一個(gè)功能是tab自動(dòng)補(bǔ)全,。我常用來(lái)查看某個(gè)類的方法,,或者是某個(gè)包中提供的函數(shù),。這個(gè)很是有用,有時(shí)候忘了某個(gè)函數(shù)是怎么寫(xiě)的時(shí)候,,用自動(dòng)補(bǔ)全查看下,。例如:
2. 查看幫助文檔和源碼
比如,我想查看os.walk 這個(gè)函數(shù)怎么用,,可以在后面加上一個(gè)問(wèn)號(hào)(os.walk,?) 再按enter 。如果想查看更詳細(xì)的源碼實(shí)現(xiàn),,則加上兩個(gè)問(wèn)號(hào),,即(os.walk?,?) ,,這個(gè)功能經(jīng)常用到,很是方便,,有時(shí)候不知道某個(gè)參數(shù)代表什么意思的時(shí)候,,就可以查看下幫助文檔。
3. 把ipython 當(dāng)作終端用
在ipython 中可以使用命令行中的許多命令,,我常常用來(lái)切換目錄,,編輯或是刪除文件。
另外,,還可以執(zhí)行外部unix 命令,,不過(guò)需要在前面加入感嘆號(hào)!,,比如,,需要編輯文件的時(shí)候,我就經(jīng)常使用 !vim abc.py 來(lái)運(yùn)行vim程序,。當(dāng)然,也可以直接使用edit abc.py 來(lái)編輯文件,,該命令會(huì)自動(dòng)啟動(dòng)vim,,但我發(fā)現(xiàn)如果使用edit命令的話,編輯完保存文件并退出的時(shí)候ipython會(huì)自動(dòng)運(yùn)行該文件,,這個(gè)h好處是可以接著在終端調(diào)用剛剛打開(kāi)的文件中的變量和函數(shù),,不過(guò)這有時(shí)候會(huì)很煩人,所以我經(jīng)常使用!vim abc.py 來(lái)編輯文件,。
ipython有許多個(gè)性化的設(shè)置,,可以在命令行中輸入 ipython profile create ,這會(huì)在 ~/.config/ipython 目錄下生成配置文件,,查看README有詳細(xì)說(shuō)明,。
4. 書(shū)簽
有些工作目錄可能經(jīng)常使用,,每次都cd很麻煩。所以,,我們可以在第一次切換到該目錄下后,,使用bookmark 命令,以后直接一次cd即可,,具體使用方法如下,。
5. 記錄
有時(shí)候我們希望將ipython 中運(yùn)行的命令保存到文件中,這時(shí)候可以使用 logstart ,,logoff 命令實(shí)現(xiàn),。
6. 調(diào)試和運(yùn)行
run abc.py即可運(yùn)行腳本,如果需要調(diào)試的時(shí)候,,加入-d參數(shù),,即 run -d
abc.py即可。需要注意的是,,運(yùn)行腳本后,,變量即保存在此時(shí)的ipython運(yùn)行環(huán)境中了,我們可以對(duì)腳本中的變量做進(jìn)一步的分析和修改,。關(guān)于調(diào)試,,
最常使用的就是 s(step), n(next), c(continue),p(print)這4個(gè)命令。
- l(list)命令用于顯示上下文環(huán)境,。例如:
l 20 (顯示當(dāng)前行上下共20行代碼) l 1, 30 (顯示從1到第30行代碼) - break 用于設(shè)置斷點(diǎn),。例如:
break 10 (在第10行設(shè)置斷點(diǎn)),break (查看斷點(diǎn)信息),, condition 1 pression 給斷點(diǎn)1設(shè)定條件pression, 這里pression是python表達(dá)式,,當(dāng)條件滿足時(shí)在該點(diǎn)停下來(lái)disable 1 ,(禁用斷點(diǎn)1), enable 1 , (恢復(fù)斷點(diǎn)1), clear 1 ,(刪除斷點(diǎn)1), ignore 1 3 ,(在執(zhí)行到斷點(diǎn)1第四次時(shí)才啟用該斷點(diǎn)),commands 1 ,(給斷點(diǎn)1設(shè)定觸發(fā)動(dòng)作,每次運(yùn)行到該斷點(diǎn)時(shí),,執(zhí)行設(shè)定的python表達(dá)式,,比如用于觀察某一變量的變化情況。輸入end結(jié)束commands)
更高級(jí)的運(yùn)用可以查看pdb的幫助文檔,。
7. 其他
其他比較有用的是pylab,,在繪圖時(shí)能夠交互,從而使得修改繪圖命令時(shí),,修改后的結(jié)果能夠立即在圖像上顯示出來(lái),。
ipython notebook 感覺(jué)很雞肋,平時(shí)很少用到,。
性能測(cè)試,,timeit ,run -t ,run -p 等等,,這些自己也很少用,,更多高級(jí)應(yīng)用可以參考本文開(kāi)始給出的參考文獻(xiàn)。
|