无法使用__init__.py导入子包

时间:2018-03-01 16:04:29

标签: python python-3.x

我的包结构如下:

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)

1 个答案:

答案 0 :(得分:0)

I guess that this module is kept in path where python does not look for when resolving for package. One thing you can do is add path where this folder is kept to PYTHONPATH environment variable so that python can detect it and import won't fail.

Execute below command on Linux platform:

export PYTHONPATH = $PYTHONPATH:/path/to/module
相关问题