如何从父目录中包含的 git 子模块导入函数?

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

在学习如何在不使用任何 Huggingface 工具的情况下微调基于 BERT 的 uncased LLM 时,我在尝试在父目录中的

tokenization_test
中导入
tmp.py
时遇到了错误消息。

我的项目目录结构如下:

.
├── .gitignore
├── .log
├── __init__.py
├── _bert
├── _ds_GLUE_MRCP
│   ├── msr_paraphrase_test.txt
│   └── msr_paraphrase_train.txt
├── mdl_bert
│   ├── bert_config.json
│   ├── bert_model.ckpt.data-00000-of-00001
│   ├── bert_model.ckpt.index
│   ├── bert_model.ckpt.meta
│   └── vocab.txt
└── tmp.py

mdl_bert
包含预训练模型的检查点/权重,
_bert
是从官方git repo克隆的子模块。

我可以在

tokenization.py
中导入
tmp.py
:

from _bert import tokenization

但是,如果我在

tokenization_test.py
中导入
tmp.py
,python 会响应

Traceback (most recent call last):
  File "/parent_dir/./tmp.py", line 14, in <module>
    from _bert import tokenization_test
  File "/parent_dir/_bert/tokenization_test.py", line 21, in <module>
    import tokenization
ModuleNotFoundError: No module named 'tokenization

tokenization_test.py
正在将
tokenization
导入为:

import tokenization

如何解决这个问题?

python-3.x nlp bert-language-model
1个回答
0
投票

Python 在其导入系统上有很棒的文档。

https://docs.python.org/3/reference/import.html#package-relative-imports

尝试相对路径..

来自 .导入标记化

原因也可能是你的等级制度。这就是它与 tmp.py 一起使用的原因。上面的链接中有更多关于 sys.paths 的文档。祝你好运。

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