在学习如何在不使用任何 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 在其导入系统上有很棒的文档。
https://docs.python.org/3/reference/import.html#package-relative-imports
尝试相对路径..
来自 .导入标记化
原因也可能是你的等级制度。这就是它与 tmp.py 一起使用的原因。上面的链接中有更多关于 sys.paths 的文档。祝你好运。