[英]Importing Python module from another module in the same level
我正在使用下面列出的基本結構處理Python程序包,並在大括號中包含每個Python文件包含的內容的示例。
MAIN_PACKAGE/
setup.py
main_package/
__init__.py
{
import package1
import package2
__all__=['main_package']
}
package1/
__init__.py
{
import module1
import module2
__all__=['package1']
}
module1/
__init__.py
{
from script1 import Class1A, Class1B
__all__ = ['script1']
}
script1.py
{contains 2 classes: Class1A and Class1B}
module2/
__init__.py
{
from script2 import Class2A, Class2B
__all__ = ['script2']
}
script2.py
{contains 2 classes: Class2A, Class2B}
module3/
__init__.py
{
from script3 import Class3A, Class3B
__all__ = ['script3']
}
script3.py
{contains 2 classes: Class3A, Class3B}
package2/
executable_script.py
到目前為止,它並沒有給我帶來麻煩。 但是,我最近添加了一個無法正確導入的新模塊(module3)。 我發現了一些相關的線程,但是沒有任何這種特殊的味道。
我可以使用setup.py成功安裝此程序,然后從命令行(任何目錄)正確導入以下內容:
python
>>> from main_package.package1.module3.script3 import Class3A, Class3B
但是,當我在同一行復制到SCRIPT2並重新運行setup.py文件(無誤差),我收到以下錯誤,當我運行executable_script
:
ImportError: cannot import name Class3A
然后,當我嘗試通過命令行導入python時,我也遇到了同樣的錯誤。 但是,僅當我嘗試將Class3A從script3導入到script2時才遇到此問題,而不是將類似的類從script1導入到script2中的時候。 我可以看到的唯一區別是script3是比script1更新的模塊。 為了使我將這個新模塊/類導入到舊腳本中,是否有可能無法更新的內容? 還是注定要趕上我的結構有問題?
另一個細節是僅當線以相同的水平加入到另一個模塊發生此錯誤,但在錯誤起源 executable_script.py
在包裝2。 例如錯誤消息的第一行是
/usr/bin/executable_script, line 9, in <module>load_entry_point('MAIN_PACKAGE==0.1.0','console_scripts','executable_script')()
。
可執行腳本的第9行是doc字符串的一部分。 我正在使用Python 2.7。
可能您是循環進口。 在ClassA導入ClassB中以及在ClassB導入ClassA或包含更多文件的地方,例如在ClassA導入Class B中,在ClassC中導入ClassB和ClassA。
嘗試使用絕對導入:
from .script3 import Class3A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.