玩转 IPython 中的包

Playing with packages in IPython

我正在使用一个使用相对导入的 Python 包。所以从一个模块,本地导入看起来像:

from . import module

包的结构如下:

package/
  __init__.py
  module1.py
  module2.py
  moduleN.py
  subpackage1/
    __init__.py
    module1.py
    module2.py
  subpackage2/
    __init__.py
    ...
  etc.

我想导入其中一个模块来单独试用它的功能,类。

因此,我 cd 进入了 package/ 目录。然后我尝试 ipython module2.py 并得到:

ValueError: Attempted relative import in non-package

我也尝试了ipython -m module2,除了ValueError,我还得到了:

WARNING: Unknown failure executing module: <module2>

我也从一个目录向上尝试了同样的事情,但得到了同样的错误。

如何导入模块并在 IPython 中使用它们的 类 和函数?

从项目的顶级目录中打开 ipython,在本例中,package/.

然后使用绝对导入导入模块:

import package.module2 as module2

import package.submodule1.module1 as m1