我有一个像下面这样的结构:
/src
__init__.py
module1.py
module2.py
/tests
__init__.py
test_module1.py
test_module2.py
/notebooks
__init__.py
exploring.ipynb
main.py
我想使用笔记本“探索”做一些数据探索,这样做我需要执行的相对进口module1
和module2
。但是,如果我尝试运行from ..src.module1 import funct1
,我会收到一个ImportError: attempted relative import with no known parent package
,我理解这是预期的,因为我正在运行笔记本,就好像它是一个脚本而不是一个模块。
因此,作为一种解决方法,我主要是在main.py
每次需要使用笔记本时将其文件夹外的笔记本拉到水平位置,然后才能from src.module1 import funct1
工作。
我知道相对导入已经有大量线程,但到目前为止我找不到更简单的解决方案来完成这项工作,而不必每次都移动笔记本。鉴于被调用时的笔记本正在“作为脚本”运行,有什么方法可以执行此相对导入?
脚本不能进行相对导入。你有没有考虑过这样的事情:
if __name__ == "__main__":
sys.path.insert(0,
os.path.abspath(os.path.join(os.getcwd(), '..')))
from src.module1 import funct1
else:
from ..src.module1 import funct1
或者使用异常:
try:
from ..src.module1 import funct1
except ImportError:
sys.path.insert(0,
os.path.abspath(os.path.join(os.getcwd(), '..')))
from src.module1 import funct1
?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句