- 要让
from .. import
起作用,模块名称中必须有与import
语句中点号数量相同的点。 - 如果您在交互模式下运行解释器,则该交互会话的名称为
__main__
。 - 因此,不能直接从交互会话进行相对导入。
我喜欢使用交互式Jupyter Notebook会话来探索数据和测试模块,在编写生产代码之前。为了使事情清晰易懂并方便团队成员,我将笔记本放在一个名为interactive
的包中,该包位于我正在测试的包和模块旁边。
package/
__init__.py
subpackage1/
__init__.py
moduleX.py
moduleY.py
moduleZ.py
subpackage2/
__init__.py
moduleZ.py
interactive/
__init__.py
my_notebook.ipynb
在 interactive.my_notebook.ipynb
的交互式会话中,如何导入其他模块,比如 subpackage1.moduleX
和 subpackage2.moduleZ
?
package
的父目录添加到sys.path
会更有意义。这样,您就可以始终执行from package.subpackageN import moduleZ
。 - theorifice