簡體   English   中英

導入模塊失敗,因為 __name__ 是 __main__

[英]Import in a module fails because __name__ is __main__

這是我的項目結構:

Project
   main.py
   myPackage/
      subfolder1/
         __init__.py
         script11.py
         script12.py
      subfolder2/
         __init__.py
         script2.py
   __init__.py

main.py我通過以下方式導入script2.py

from myPackage.subfolder2 import script2 as script2

然后,我從script2.py中的main.py調用一個函數:

bar = script2.foo()

script2我需要從script1導入一個函數:

from ..subfolder1.script11 import my_function

它因錯誤而中斷:

attempted relative import with no known parent package

我檢查了__name__變量,它確實具有__main__值。 我怎樣才能正確地管理它?

所有你應該做的是改變你的進口main.py ,以from myPackage.subfolder2 import script2 我使用該導入以這種方式設置了一個目錄和一些文件,並且腳本按預期運行:

main.py
myPackage/
  subfolder1/
    script11.py
  subfolder2/
    script2.py

腳本11.py

def bar():
    return 10

腳本2.py

from ..subfolder1.script11 import bar

def foo():
    x = bar()
    print('foo is', x)

主文件

from myPackage.subfolder2 import script2 as s2

s2.foo()

跑步:

>>> py .\main.py
foo is 10

一些注意事項:

  • 我假設 Python 3,因為 Python 2 從今年年初被棄用
  • 在 Python 3 中, __init__.py文件不是制作包所必需的,但擁有它們不會有任何傷害。 如果你願意,你可以把它們放在外面。
  • from subfolder2 import script2 as script2as script2部分是多余的。 它將已作為script2導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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