我正在查看兩條__import__
語句的代碼,第二條__import__
語句不起作用,除非第一條語句已經運行。爲什麼一個__import__語句影響下一個的有效性?
的目錄結構是這樣的:
dir1
|-__init__.py
|-subdir1
| |-__init__.py
| |-file1.py
| |-file2.py
|
|-subdir2
|-__init__.py
|-file1.py
|-file2.py
的代碼有兩個__import__
聲明:
m = __import__('dir1.'+subdir1, fromlist=[file1])
...
m = __import__(file2, fromlist=[class_inside_file2])
第一個是有道理的 - 大致是這樣做
from dir1.subdir1 import file1
相當於
但允許動態提供子目錄和文件。這是第二種說法,我不明白它爲什麼起作用。它看起來應該是
from file2 import class_inside_file2
相當於這不應該上班是subdir1
,但我的當前工作目錄是上面兩個層次。此外,所有__init__.py
文件都是空的。
正如您所預料的那樣,如果第二個導入語句自身運行,則第二個導入語句會失敗,並返回ImportError
。但是,之後的第一個導入語句已經運行第二個工作。爲什麼?
具有'__import__'s的代碼在哪裏?另外,第二個有'file2'或''file2「'?從你的文章中不清楚哪些東西是變量,哪些是文字串。 – BrenBarn
@BrenBarn @BrenBarn大部分變量都會在代碼評估時保存這些字面值,即'file2'的值爲''file2'''。 –
檢查第一個導入不會覆蓋'file2'的值,它不應該給出您發佈的內容,但我猜這不是實際的代碼。 –