[英]Python - "ImportError: cannot import name" for modules in the same directory
我在同一個目錄中有兩個 python 文件。 我也有__init__.py
文件。 Python版本為: 3.9.7
無法弄清楚為什么我不能導入模塊。
a.py
def aaa():
print ("test")
b.py
from a import aaa
aaa()
錯誤:
from a import aaa
ImportError: cannot import name 'aaa' from 'a' (/usr/lib64/python3.9/a.py)
它也不起作用:
from .a import aaa
ImportError: attempted relative import with no known parent package
將其運行為: python b.py
我嘗試了其他選項但沒有成功。
更新:沒有 init.py from a import aaa aaa()
的相同簡單代碼適用於 python 2.7。
OS:
"Red Hat Enterprise Linux 8.5"
謝謝!
對於同一文件夾中的相對導入,請使用單個.
from .a import aaa
就像 Samathingamajig 指出的那樣,您需要相對進口。
因此,首先,將b.py
中的行更改為:
from .a import aaa
您還需要處理您現在擁有一個包而不是單個模塊的事實。 Python 需要知道如何找到你的模塊。
解決這個問題的一種方法是使用-m
運行它。 如果您的 Python 文件位於/some/dir/myproject/
中,請按如下方式運行它:
cd /some/dir
python3 -m myproject.b
請注意名稱空間點替換了最后一個命令中的目錄分隔符。
或者,安裝你的包(我建議學習打包,但現在你可以簡單地將myproject
目錄移動到sys.path
中的目錄之一),然后你可以讓任何 Python 文件import myproject.b
或運行python3 -m myproject.b
從任何目錄。
如果您想擁有一個既可用作庫又可用作獨立應用程序的包,您可以添加包含代碼的__main__.py
文件以將其作為應用程序運行。 這樣python3 -m myproject
將運行您的主項目
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.