这是我的情况。我在某个文件夹中有一些 jupyter 笔记本,我想通过我制作的库在这些笔记本之间共享一些代码。
文件夹结构如下:
1.FirstFolder/
notebookA.ipynb
2.SecondFolder/
notebookB.ipynb
mylib/
__init__.py
otherfiles.py
我尝试将以下代码放在笔记本的开头:
# to use modules in parent folder
import sys
import os
from pathlib import Path
libpath = os.path.join(Path.cwd().parent,'mylib')
print(f"custom library functions are in the module:\n\t{libpath}")
sys.path.append(libpath)
import mylib
打印输出模块的正确路径,然后出现 ModuleNotFoundError 并且程序崩溃:
---> 10 import mylib
11 from mylib import *
ModuleNotFoundError: No module named 'mylib'
查找 SO,我发现这应该是从非默认文件夹导入模块的方法。错误在哪里?
编辑:在 FinleyGibson 的回答之后,我尝试sys.path.append(Path.cwd().parent)重新启动内核,但我仍然遇到同样的问题。
EDIT2:我试过这个并且它有效,但我仍然想知道为什么以前的方法没有奏效。
import sys
import os
from pathlib import Path
tmp = Path.cwd()
os.chdir(Path.cwd().parent)
sys.path.append(Path.cwd())
import mylib
from mylib.dataloading import *
os.chdir(tmp)