簡體   English   中英

Python - 同一目錄中的模塊的“ImportError:無法導入名稱”

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

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