【问题标题】:import a function from another .ipynb file从另一个 .ipynb 文件导入函数
【发布时间】:2017-10-22 07:23:17
【问题描述】:

我在名为“functions.ipynb”的文件中定义了一个 hello world 函数。现在,我想使用“导入函数”在另一个文件中导入函数。我确信它们在同一个文件夹中。但是,它仍然显示“ImportError: No module named functions”。顺便说一句,我正在使用 jupyter notebook。非常感谢!

【问题讨论】:

标签: python import ipython jupyter-notebook


【解决方案1】:

您需要使用ipynb package/module importer。您需要安装它:pip install ipynb。

创建一个名为 my_functions.ipynb 的笔记本。给它添加一个简单的函数。

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

然后,创建第二个 IPython Notebook 并使用以下命令导入此函数:

from ipynb.fs.full.my_functions import factorial

然后你可以像在同一个 IPython Notebook 中一样使用它:

testing = factorial(5)

有关详细信息,请参阅documentation。

【讨论】:

  • 这对我不起作用我总是收到此错误 KeyError: 'package'。我用于笔记本的环境是 Azure Databricks 和 python 3。有解决方案吗?
  • 确保你安装了ipynb包,否则它将无法工作!
  • 如果my_functions 包含一些我不想执行但只想要文件中的函数的代码怎么办?
  • ModuleNotFoundError: No module named 'ipynb.fs.full.my_functions' 我收到了这个错误,谁能告诉我原因,我也安装了 ipynb,,,
  • @Milos 然后使用import ipynb.fs.defs.my_functions 如此处所述github.com/ipython/ipynb
【解决方案2】:

您可以将 functions.ipynb 保存为 functions.py 并可以将文件作为“导入函数”导入。现在您可以将函数文件中定义的任何函数用作“functions.function_name” 例如,如果 add 是一个函数, 函数.add(5,3) 导入后就可以了。

【讨论】:

    【解决方案3】:

    对于我的用例,ipnyb 导入由于某种原因不起作用。我必须使用 Jupyter Notebook 魔法单元来导入我的函数。:

    %run MyOtherNotebook.ipynb     #this is were my function was stored
    function(df)                    #then simply run the function
    

    【讨论】:

      【解决方案4】:

      @David Rinck 的回答解决了这个问题,但我建议您添加样板文件 __name__ == "__main__" 来保护您不想意外调用的脚本。它在same way 中工作,就像在通常的 Python 文件中一样。

      如果一个.ipynb文件a.ipynb被另一个b.ipynb导入

      from ipynb.fs.full.a import factorial
      

      a.ipynb 中的 __name__ 将是 ipynb.fs.full.a 而不是 "__main__"。

      【讨论】:

        猜你喜欢
        • 2013-12-09
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-09
        • 2018-06-21
        • 1970-01-01
        • 2018-05-02
        相关资源
        最近更新 更多