Python 重新加载Jupyter实验室中已更改的模块的最佳方法?

Python 重新加载Jupyter实验室中已更改的模块的最佳方法?,python,ipython,jupyter,Python,Ipython,Jupyter,问题:我喜欢保持jupyter中的ipython笔记本干净,并将实用程序函数放在外部文件中保存,但一旦写入,就可以根据需要从笔记本中调用它们 问题是,一旦我将已完成的函数移动到外部文件,我就必须杀死内核并重新运行所有操作以导入它 我试过做正常的事情: %load_ext autoreload %autoreload 2 但它似乎不起作用 有更好的建议吗?您可以使用魔法函数%run来定义实用程序函数 当我在编写新的实用程序函数,并希望在jupyter笔记本中测试和改进它们时,我对这一点非常有用,

问题:我喜欢保持jupyter中的ipython笔记本干净,并将实用程序函数放在外部文件中保存,但一旦写入,就可以根据需要从笔记本中调用它们

问题是,一旦我将已完成的函数移动到外部文件,我就必须杀死内核并重新运行所有操作以导入它

我试过做正常的事情:

%load_ext autoreload
%autoreload 2
但它似乎不起作用


有更好的建议吗?

您可以使用魔法函数
%run
来定义实用程序函数

当我在编写新的实用程序函数,并希望在jupyter笔记本中测试和改进它们时,我对这一点非常有用,而不必每次都重新启动整个程序。查看杰克·范德普拉斯的《伊皮顿魔法命令》一章

详细信息:

import pandas as pd

def framer(df):
    df_out = df['parch'].to_frame()
    return(df_out)
我在名为
c:/jupytertest
的文件夹中有一个名为
utils.py
的文件

Utils.py:

import pandas as pd

def framer(df):
    df_out = df['parch'].to_frame()
    return(df_out)
我在jupyter笔记本电脑的一个电池里有如下内容:

# standard imports
import os
import pandas as pd
os.chdir('C:/jupytertest/')

# run / reload utils
%run utils.py

# data
url = "https://raw.github.com/mattdelhey/kaggle-titanic/master/Data/train.csv"
titanic = pd.read_csv(url)

# test reloading of function from utils.py
values = framer(titanic)

print(values.tail(5))
现在,每当我将
df_out=df['parch'].改为_frame()
改为
name
或我知道的泰坦尼克号数据集中存在的任何其他列时,我要做的唯一一件事就是在jupyter中应用最新的函数,就是保存
utils.py
并重新运行笔记本中的单元格

不需要在笔记本中重新启动内核


查看Jake VanderPlas的Python数据科学手册,了解更多详细信息。

您可以在定义了实用程序函数的地方使用magic function
%run

当我在编写新的实用程序函数,并希望在jupyter笔记本中测试和改进它们时,我对这一点非常有用,而不必每次都重新启动整个程序。查看杰克·范德普拉斯的《伊皮顿魔法命令》一章

详细信息:

import pandas as pd

def framer(df):
    df_out = df['parch'].to_frame()
    return(df_out)
我在名为
c:/jupytertest
的文件夹中有一个名为
utils.py
的文件

Utils.py:

import pandas as pd

def framer(df):
    df_out = df['parch'].to_frame()
    return(df_out)
我在jupyter笔记本电脑的一个电池里有如下内容:

# standard imports
import os
import pandas as pd
os.chdir('C:/jupytertest/')

# run / reload utils
%run utils.py

# data
url = "https://raw.github.com/mattdelhey/kaggle-titanic/master/Data/train.csv"
titanic = pd.read_csv(url)

# test reloading of function from utils.py
values = framer(titanic)

print(values.tail(5))
现在,每当我将
df_out=df['parch'].改为_frame()
改为
name
或我知道的泰坦尼克号数据集中存在的任何其他列时,我要做的唯一一件事就是在jupyter中应用最新的函数,就是保存
utils.py
并重新运行笔记本中的单元格

不需要在笔记本中重新启动内核


查看Jake VanderPlas的Python数据科学手册,了解更多详细信息。

autoreload
对我来说也是坏的,尽管我记得大约一年前它曾经工作过(我有一句话,
!ninja-C模块目录
/
%reload mymodule
。它目前功能不正常。@lollercoaster我的建议对你有什么作用?
自动加载
对我来说也不适用,尽管我记得大约一年前它曾经工作过(我有一行代码)
!ninja-C模块目录
/
%reload mymodule
。它目前功能不正常。@lollercoaster我的建议对你有什么作用?