我的笔记本和模块放置如下。
my_directory
modules # This is just a directory, not a module
my_module_1.py
my_module_2.py
my_notebook.ipynb
my_module_1.py
导入到 my_module_2.py
中,my_module_2.py
导入到 my_notebook.ipynb
中,如下所示。
# in `my_module_2.py`
import my_module_1 as something
# in `my_notebook.ipynb`
import modules.my_module_2 as something
from modules.my_module_2 import my_function
如果我只运行
my_module_2.py
,那么它就可以正常工作。但是,如果我在 my_notebook.ipynb
中运行代码,那么 ModuleNotFoundError
会像下面这样升高。
ModuleNotFoundError Traceback (most recent call last)
Input In [1], in <cell line: 1>()
----> 1 import modules.my_module_2 as something
File ~\my_directory\modules\my_module_2.py:1, in <module>
----> 1 import my_module_1 as something
ModuleNotFoundError: No module named 'my_module_1'
如果我像下面这样更改
my_module_2.py
,笔记本就可以工作,但是如果我只运行它,my_module_2.py
就不起作用......
# in `my_module_2.py`
import modules.my_module_1.py import something
我可以做些什么来使模块和笔记本同时工作而不改变文件结构吗?
您希望项目顶部文件夹
my_directory
可以通过Python搜索路径
PYTHONPATH
环境变量上my_module_1.py
setup.py
并以可编辑模式安装该包 pip install -e .
以添加到 python 的搜索路径中。所有这些方法都可以让你写
import modules.my_module_2 as something
在您的笔记本中、
my_module_1.py
以及任何其他项目中。