解決Jupyter notebook中.py與.ipynb文件的import問(wèn)題
在jupyter notebook中,因?yàn)槠浣馕鑫募姆绞绞腔趈son的,所以其默認(rèn)保存的文件格式不是.py而是.ipynb。而.ipynb文件并不能簡(jiǎn)單的import進(jìn).py或者.ipynb文件中,這就為開(kāi)發(fā)帶來(lái)了極大不便。因?yàn)樵趈upyter notebook中,一定要是在默認(rèn)的.ipynb下才能有一系列的特性支持,比如自動(dòng)補(bǔ)全,控制臺(tái)等待,而.py文件只能通過(guò)文本編輯器修改,非常非常不便。
因?yàn)?ipynb可以import .py的module,所以其中一個(gè)解決方法是將已經(jīng)寫好的.ipynb格式的module轉(zhuǎn)換成.py文件。在寫好的.ipynb文件的最后新建一個(gè)cell,寫入代碼如下:
try: !jupyter nbconvert --to python file_name.ipynb # python即轉(zhuǎn)化為.py,script即轉(zhuǎn)化為.html # file_name.ipynb即當(dāng)前module的文件名 except: pass
然后在當(dāng)前目錄下會(huì)生成一個(gè)同名的.py文件,這個(gè)module可以在其他.ipynb中被import。但這樣轉(zhuǎn)化出的.py文件中有時(shí)候會(huì)保留上述代碼。如果要完全避免的話,可以專門另寫一個(gè)轉(zhuǎn)換文件,集中存放所有文件的轉(zhuǎn)換語(yǔ)句。
補(bǔ)充知識(shí):jupyter notebook的project管理——.ipynb中調(diào)用.py文件
做課題和數(shù)據(jù)挖掘競(jìng)賽用python比較多,比較常用的是在服務(wù)器終端輸入jupyter notebook --ip 0.0.0.0,打開(kāi)jupyter notebook的一個(gè)后臺(tái),并在本地windows電腦瀏覽器進(jìn)入該服務(wù)端寫python代碼。
將.ipynb和.py結(jié)合,可以使得jupyter notebook的工程文件目錄更有條理,一些函數(shù)可以定義在.py文件中,需要調(diào)用這些文件時(shí),就導(dǎo)入到.ipybn中執(zhí)行。
那在jupyter notebook中調(diào)用同,怎么在.ipynb.py中調(diào)用.py文件呢?
舉個(gè)栗子:
在同一個(gè)目錄下,有call_hello.ipynb和hello.py兩個(gè)文件:
hello.py中定義了hello函數(shù)如下:
def hello():
print('say hello');
在call_hello.ipynb中調(diào)用hello()函數(shù):
from hello import *
hello()
輸出: say hello
但是修改.py文件中的代碼后,必須在ipynb中reload模塊,才會(huì)生效。
如果hello.py中的代碼修改成:
def hello():
print('say hello,bye');
在call_hello.ipynb中再次調(diào)用hello()函數(shù),依然輸出:say hello
重新導(dǎo)入hello模塊:
from imp import reload reload(hello) hello()
這時(shí)候會(huì)輸出:say hello, bye
bingo!
以上這篇解決Jupyter notebook中.py與.ipynb文件的import問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用jsonpath-rw模塊處理Json對(duì)象操作示例
這篇文章主要介紹了Python使用jsonpath-rw模塊處理Json對(duì)象操作,結(jié)合實(shí)例形式分析了Python使用requests與response處理json的方法,并給出了jsonpath_rw模塊操作json對(duì)象的基本示例,需要的朋友可以參考下2018-07-07通過(guò)Python編程將CSV文件導(dǎo)出為PDF文件的方法
CSV文件通常用于存儲(chǔ)大量的數(shù)據(jù),而PDF文件則是一種通用的文檔格式,便于與他人共享和打印,將CSV文件轉(zhuǎn)換成PDF文件可以幫助我們更好地管理和展示數(shù)據(jù),本文將介紹如何通過(guò)Python編程將CSV文件導(dǎo)出為PDF文件,需要的朋友可以參考下2024-06-06Python光學(xué)仿真wxpython透鏡演示系統(tǒng)初始化與參數(shù)調(diào)節(jié)
這篇文章主要為大家介紹了Python光學(xué)仿真wxpython透鏡演示系統(tǒng)的初始化與參數(shù)調(diào)節(jié),同樣在學(xué)習(xí)wxpython透鏡演示系統(tǒng)的入門同學(xué)可以借鑒參考下,希望能夠有所幫助2021-10-10嘗試用最短的Python代碼來(lái)實(shí)現(xiàn)服務(wù)器和代理服務(wù)器
"人生苦短、我用Python",Python最大的特點(diǎn)便是代碼簡(jiǎn)潔,得益于Python自帶的wsgiref包和socket模塊,這里我們將嘗試用最短的Python代碼來(lái)實(shí)現(xiàn)服務(wù)器和代理服務(wù)器:2016-06-06對(duì)python中的 os.mkdir和os.mkdirs詳解
今天小編就為大家分享一篇對(duì)python中的 os.mkdir和os.mkdirs詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10python執(zhí)行l(wèi)inux系統(tǒng)命令的三種方式小結(jié)
本文介紹三種在python執(zhí)行l(wèi)inux命令的方式,三種方式都是基于python的標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn),因此不需要額外安裝第三方庫(kù),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02