簡體   English   中英

無法從“module.py”導入名稱“function” - 同一目錄,來自同一模塊的另一個函數導入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM