【问题标题】:ImportError Only in Jupyter Notebook仅在 Jupyter Notebook 中出现 ImportError
【发布时间】:2020-11-21 22:53:14
【问题描述】:

当我尝试将我在 Python 脚本中创建的函数和类导入 Jupyter Notebook 时,我遇到了导入错误。但是,当我在常规脚本而不是笔记本中运行相同的代码时,它运行没有问题。

三个文件都在同一个目录下:

首先,我有 my_function_script.py,它定义了函数。

def my_function():
    pass

其次,我有 my_class_script,它都导入了定义类的函数:

from my_function_script import my_function

class my_class():
    pass

当我尝试在 Jupyter Notebook 中运行以下导入脚本时,我收到 ImportError。

from my_class_script import my_class
ImportError                               Traceback (most recent call last)
<ipython-input-6-8f2c4c886b44> in <module>
----> 1 from my_class_script import my_class

~\my_directory\my_class_script.py in <module>
      5 
----> 6 from my_function_script import my_function

ImportError: cannot import name 'my_function' from 'my_function_script' (C:\Users\my_directory\my_function_script.py)

我认为问题是特定于 Jupyter Notebook 的,原因有两个。首先,我已经确认 my_function_script.py 和 my_class_script.py 都可以在终端中运行而不会出错。其次,当我采用导致 Jupyter Notebook 出错的同一行并在常规 Python 脚本中运行它时,它运行时不会出错。

我有 Windows,但我没有多个环境或 Python 版本。

【问题讨论】:

  • import my_function_script 工作吗?

标签: python jupyter-notebook jupyter importerror


【解决方案1】:

您可以在运行时添加到 Python 路径:

# some_file.py
import sys
# insert at 1, 0 is the script path (or '' in REPL)
sys.path.insert(1, '/path/to/application/app/folder')

import file

【讨论】:

  • 同上。我试过了,得到了和以前一样的错误。
【解决方案2】:

这通常发生在您的 jupyter notebook 没有指向正确的导入目录时 解决此问题的一种方法是更改​​ jupyter notebook 中的工作目录

import os
os.chdir('path/to/python/scripts/directory')
from my_class_script import my_class

另一种方法是直接在 jupyter notebook 中使用 UNIX 命令

cd /path/to/python_script_directory
from my_class_script import my_class

确保不要cd 命令和导入语句放在同一个笔记本块中

【讨论】:

  • 谢谢。我试过这个并得到同样的错误。不管我是否运行它,我注意到错误的最后一行包含正确的路径。
  • 我在使用 windows 时遇到了类似的 jupyter 问题,我无法修复或找出原因。不是你应该这样做,但作为建议,我建议使用 linux 内核进行开发。使用dual bootVMware 很容易做到。我喜欢的 linux 风格之一是elementary OS
  • 您是否尝试用“\\”代替路径中的所有“\”。 "\" 在 Windows 中用作special escape character,并且路径无效。我切换到 linux 的另一个原因。
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
相关资源
最近更新 更多