![](/img/trans.png)
[英]Skip directory name in import path by importing subpackage in __init__.py
[英]Cannot import subpackage using __init__.py
我的包結構如下:
package
__init__.py
subpackageA
api.py
__init__.py
subpackageB
action.py
start.py
__init__.py
主包僅用於在subpackageB start.py中公開一個稱為Schedule的類。 所有其他類都在內部使用,不能公開。
因此,我的包/__init__.py如下所示:
from package.subpackageB.start import Schedule
但是,當我嘗試導入軟件包時,出現以下錯誤:
ImportError: No module named 'package.subpackageB'
我在這里做錯了什么?
更新資料
因此,經過一番辛苦工作,我意識到我的方法可能對我要實現的目標是錯誤的。
我對其進行了更改,以使api.py,action.py和start.py不再位於子程序包中,而僅在主程序包中。 然后,我對action.py進行了重新設計,以使其內容成為start.py的一部分。
這使我能夠執行的操作是使用__all__參數僅從start.py導入我想要的Schedule模塊。
當我使用api.py時,它也將由start.py導入,但這不是一個大問題,因此新方法對我有效。
package
__init__.py
api.py
start.py (action.py contents now part of start.py)
我猜想這個模塊保存在解析包時python不查找的路徑中。 您可以做的一件事是將保存此文件夾的路徑添加到PYTHONPATH環境變量中,以便python可以檢測到它並且導入不會失敗。
在Linux平台上執行以下命令:
export PYTHONPATH = $PYTHONPATH:/path/to/module
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.