簡體   English   中英

無法使用__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.

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