【问题标题】:Jupyter Notebook importing class from python file in same directoryJupyter Notebook从同一目录中的python文件导入类
【发布时间】:2020-10-07 07:47:57
【问题描述】:

我在 .ipynb 文件所在的同一目录中编写了名为 CombinedAttributesAdder 的简单类。喜欢:

-project
 -project.ipynb
 -combined_attributes_adder.py

此文件包含名为 CombinedAttributesAdder 的类 当我尝试将此类导入 ipynb 时,例如:

from combined_attributes_adder import CombinedAttributesAdder

它给了我一个错误:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-73-65ed70439bcc> in <module>
----> 1 from combined_attributes_adder import CombinedAttributesAdder

ImportError: cannot import name 'CombinedAttributesAdder' from 'combined_attributes_adder' (/home/mat/Documents/Projects/machine-learning-notebooks/projects/combined_attributes_adder.py)

这是为什么呢?

【问题讨论】:

    标签: python-3.x jupyter-notebook python-module


    【解决方案1】:

    这可能有多种原因。当我遇到同样的错误时,我发现 Jupyter 在 Python 文件已经导入一次后似乎没有重新读取它。

    因此,如果您使用以下命令进行初始导入:

    import combined_attributes_adder
    

    然后将CombinedAttributesAdder 类添加到combined_attributes_adder.py,将您的单元更改为以下内容并在不重新启动内核的情况下重新运行单元,您会收到您发布的错误消息:

    from combined_attributes_adder import CombinedAttributesAdder
    

    在导入的 Python 文件发生更改后,如果您之前已经导入了模块,您可能需要重新启动内核才能获取更改。

    为避免这种情况,您可以改用'run' magic,如this answer 所示:

    %run -i 'combined_attributes_adder.py'
    

    本质上与

    from combined_attributes_adder import *
    

    链接的答案还包含一种在更改时自动重新加载的方法。

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 2017-08-01
      • 2018-08-22
      • 1970-01-01
      • 2021-10-29
      • 2016-10-04
      • 2019-04-21
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多