[英]ImputError: cannot import name “function” from “module.py”
[英]Cannot import name 'function' from 'module.py' - same directory, another function from the same module imports
我有一個 Jupyter Notebook - 我們稱之為main
,我正在使用 Python 3 環境在 Jupyter Lab 3.0.14 中零碎地運行它。
在這個筆記本中,我試圖從一個模塊中導入自定義函數,我們稱之為module.py
,它與main
位於同一目錄中。
它看起來像這樣:
// main
import sys
import os
from module import foo, bar
// module.py
def foo():
return
def bar():
return
當我在main
中運行 import 語句時,它會引發錯誤
ImportError: cannot import name 'bar' from 'module' (/module.py)
如果我跑
from module import foo
或者
from module import *
沒關系(雖然調用函數會拋出函數is not defined
的錯誤)。 事實上,即使module.py
中沒有名為foo
的函數,它也會導入foo
。 它不會按名稱導入我自己的任何函數。 我覺得我一定錯過了一些基本的東西,在這里......
任何幫助將不勝感激!!
好的,這是我第一次使用 Jupyter Lab,這個問題來自對 Jupyter(可能還有其他 IDE?)如何管理包的基本誤解。
簡而言之,據我了解,重新運行從module.py
導入函數的代碼實際上並沒有重新導入內容。 它導入的唯一內容是我第一次詢問的內容,隨后對導入函數的任何調用都只引用了我提取的第一個靜態圖像。
因此,如果module.py
有一個函數foo
,我運行:
from module import foo
...然后進行了一些更改,例如編輯foo
的內容並添加bar
,運行:
from module import foo, bar
...實際上並沒有做任何事情,只是引用了我提取的第一個module.py
副本。 因為第一次運行導入功能時bar
不存在,所以無論我重新運行多少次導入功能,它都“看不到它”。 基本上,我不得不重新啟動內核來修復它。
我注意到這一點是因為當我更改腳本的名稱時,它會導入以前不工作的函數,但隨后對函數的編輯,即使一旦導入,也無法識別。
這個鏈接提供了我需要弄清楚的線索。
希望這可以幫助某人!
在 Jupiter notebook 中重新啟動內核。 我通過重新啟動內核解決了類似的導入名稱問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.