为了避免“隐藏配置”(即不在源代码控制/机器特定的事情)并保持笔记本/代码分离,如下所示,我执行如下操作:
code/
mymodule.py
mypackage/
__init__.py
notebooks/
mynb.ipynb
mynb2.ipynb
paths.py
在paths.py中:
import sys
import pathlib
sys.path.insert(0, str(pathlib.Path(__file__).parents[1] / 'code'))
# sys.path[0] = str(pathlib.Path(__file__).parents[1] / 'code')
然后在mynb * .ipynb中我很高兴地做到:
import paths
import mymodule, mypackage
等
后一种形式有效地替换了从空字符串(当前目录)到“代码”目录的导入路径,这可能有点清晰.这使得import对使用os.chdir()之类的东西不敏感.