`ModuleNotFoundError`

问题描述 投票:0回答:1

我的笔记本和模块放置如下。

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

我可以做些什么来使模块和笔记本同时工作而不改变文件结构吗?

python import module jupyter
1个回答
0
投票

您希望项目顶部文件夹

my_directory
可以通过Python搜索路径

  1. 在您的
    PYTHONPATH
    环境变量上
  2. 调用时您当前的工作目录
    my_module_1.py
  3. 您的 IDE 的“项目”目录(例如 pycharm 和spyder)。
  4. 创建一个
    setup.py
    并以可编辑模式安装该包
    pip install -e .
    以添加到 python 的搜索路径中。

所有这些方法都可以让你写

import modules.my_module_2 as something

在您的笔记本中、

my_module_1.py
以及任何其他项目中。

© www.soinside.com 2019 - 2024. All rights reserved.