0
我看到很多人使用下列導入方法在自己的項目:dot_module和dot_dot_module當導入模塊
from .module1 import a,b
from ..module2 import *
模塊1和模塊2是一個.py
文件,而不是包的文件夾。與import module
有什麼不同?這是否意味着在當前和../文件夾中導入模塊?但是,當我嘗試導入同一文件夾中的另一個文件,它說:
import .other
>>> SyntaxError: Invalid syntax
from .other import *
>>> ValueError: Attempted relative import in non-package
我就可以了好奇。謝謝〜
謝謝〜我第一次知道'相對導入'。我在解釋器中使用包含'from .other import *'的'import a'來測試。所以在這種情況下它不是'__main__'。另外,我嘗試'python -m a',甚至爲'python -m b'創建一個新的腳本b(包含'import a')。它仍然引發相同的ValueError ... – platinhom
@platinhom你可以在OP中佈局你的目錄結構嗎? – gil
目錄結構是:a.py,b.py和other.py都在同一個文件夾中。我在這個文件夾中添加一個__init__.py,使它看起來像一個包。但運行b.py('import a')仍然不起作用。但是,當我將b.py移動到上面的文件夾('b.py','test/a.py','test/other.py','test/__ init __。py')並將b.py修改爲' import test.a','from other import *'起作用!看起來有必要將'a.py'作爲一個包中的模塊。 – platinhom