我想在
foo.py
和 main.ipynb
中导入 main.py
。这是我的目录结构:
./
main.ipynb # from src.foo import *
src/
foo.py # from .bar import * # NOTICE DOT HERE
bar.py
main.py # from foo import *
通过此设置,
main.ipynb
运行良好,但 main.py
出现错误。
所以我尝试了不同的结构:
./
main.ipynb # from src.foo import *
src/
foo.py # from bar import * # NOTICE NO DOT HERE
bar.py
main.py # from foo import *
使用此设置,
main.ipynb
会出错,而 main.py
运行正常。
如何设置导入以使
main.ipynb
和 main.py
都可以工作?
就上下文而言,最终目标是我希望我的 GitHub 存储库包含除 docker 映像之外的所有内容,仅包含 src 文件夹。
要使用正确的相对导入,您应该将
__init__.py
文件添加到文件夹 src
以使其成为 python 包。所以在你的情况下:
./
main.ipynb # from src.foo import *
src/
__init__.py
foo.py # from .bar import * # NOTICE DOT HERE
bar.py
main.py # from foo import *
它应该有效。