我有一个类似于下面的目录结构meta_project
project1
__init__.py
lib
module.py
__init__.py
notebook_folder
notebook.jpynb
在notebook.jpynb中工作时,如果尝试使用相对导入访问module.py中的函数function(),则使用:from ..project1.lib.module import function
我得到以下错误SystemError Traceback (most recent call last)
in ()
----> 1 from ..project1.lib.module import function
SystemError: Parent module '' not loaded, cannot perform relative import
有什么方法可以使用相对导入来实现这一点吗?
注意,笔记本服务器是在meta_project目录级别实例化的,因此它应该可以访问这些文件中的信息。
另外,请注意,至少最初的目的project1没有被认为是一个模块,因此没有__init__.py文件,它只是一个文件系统目录。如果问题的解决方案需要将其视为一个模块,并包含一个__init__.py文件(甚至是一个空白文件),那就可以了,但这样做还不足以解决问题。
我在机器和相对导入之间共享此目录允许我在任何地方使用相同的代码,&;我经常使用笔记本进行快速原型设计,因此,涉及到将绝对路径组合在一起的建议不太可能有帮助。
Edit:这与Relative imports in Python 3不同,后者通常讨论Python 3中的相对导入,特别是从包目录中运行脚本。这与jupyter笔记本中的工作有关,该笔记本试图调用另一个目录中的本地模块中的函数,该目录具有不同的常规和特定方面。