【问题标题】:importing from same folder, after being called by jupyter in outside folder在外部文件夹中被 jupyter 调用后,从同一文件夹导入
【发布时间】:2020-08-07 13:52:16
【问题描述】:

当在 jupyter notebook 中的包外调用时,我无法从同一包中的其他模块导入模块中的文件。

我在名为 project 的文件夹中有一个具有以下结构的项目:

├───data
│   ├───external
│   ├───interim
│   ├───processed
│   └───raw
├───docs
├───models
├───notebooks
│   ├───data_loading.ipynb
│   └───wandb
├───references
├───reports
│   └───figures
├───src
│   ├───data
│   │   │───datasets.py
│   │   │───data_util.py
│   │   └───__init__.py
│   ├───features
│   ├───__init__.py
│   ├───models
│   ├───visualization
│   └───__pycache__
└───wandb

从 notebooks 文件夹中的 jupyter notebook data_loading.ipynb,我正在尝试以下操作:

import os
import sys
module_path = os.path.abspath(os.path.join('..'))
if module_path not in sys.path:
    sys.path.append(module_path)

from src.data.datasets import TransformersFromRaw

它给了我错误信息:

ModuleNotFoundError: No module named 'data_util'

这源于尝试从与 datasets.py 相同文件夹中的模块导入函数

from data_util import check_cuda_available, tokenize_preserve_labels, substitute_navn

我尝试将当前目录设置为项目文件夹,但还是不行。

【问题讨论】:

    标签: python python-3.x jupyter-notebook python-import


    【解决方案1】:

    尝试像这样导入 -

    from .data_util import check_cuda_available, tokenize_preserve_labels, substitute_navn
    

    在 python3 中,您必须使用. 运算符来指定当前目录,同时导入任何模块。

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 1970-01-01
      • 2021-01-03
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      相关资源
      最近更新 更多