gpt4 book ai didi

python - 从子子文件夹导入模块时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:10 26 4
gpt4 key购买 nike

我正在尝试利用 uncertainty库,我已将存储库克隆到我的目录结构中,如下所示:

.Lux/
├── generateFeatures.py
├── generateLexicons.py
├── __init__.py
├── res
│   ├── __init__.py
│   ├── test2.py
│   └── uncertainty
│   ├── __init__.py
│   ├── test1.py
│   └── uncertainty
│   ├── classifier.py
│   ├── lib
│   │   ├── __init.py__
│   │   └── nlp
│   │   ├── __init__.py

我的两个 test.py 具有相似的内容,它们所做的只是导入不确定性分类器

test1.py 完美运行

from uncertainty.classifier import Classifier

但是test2.py

from uncertainty.uncertainty.classifier import Classifier

产量:

Traceback (most recent call last):
File "/home/lucas/Lux/Lux/lib/python3.5/site-packages/pkg_resources/__init__.py", line 359, in get_provider
module = sys.modules[moduleOrReq]
KeyError: 'uncertainty.lib.nlp'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "test.py", line 1, in <module>
from uncertainty.uncertainty.classifier import Classifier
File "/home/lucas/Lux/res/uncertainty/uncertainty/classifier.py", line 9, in <module>
from .lib.nlp import summarizer
File "/home/lucas/Lux/res/uncertainty/uncertainty/lib/nlp/__init__.py", line 3, in <module>
VERBS_PATH = resource_filename('uncertainty.lib.nlp', 'verbs.txt')
File "/home/lucas/Lux/Lux/lib/python3.5/site-packages/pkg_resources/__init__.py", line 1144, in resource_filename
return get_provider(package_or_requirement).get_resource_filename(
File "/home/lucas/Lux/Lux/lib/python3.5/site-packages/pkg_resources/__init__.py", line 361, in get_provider
__import__(moduleOrReq)
ImportError: No module named 'uncertainty.lib'

为什么 test1.py 有效而 test2.py 无效?

更新

我已经在每个没有它们的文件夹上放置了空的__init__.py,但仍然无法弄清楚这一点。

我尝试将外部 uncertainty 文件夹重命名为其他名称,认为这可能是一个错误的解析名称,但这也不起作用。

最佳答案

出现此问题的原因是 lib/nlp 文件夹中的 __init__.py 文件。正如 thom747 所指出的在注释中,VERBS_PATH 提供了 uncertainty/lib/nlpverbs'txt 的路径。

当您从 test1.py 导入时,此路径是正确的,但从 test2.py 导入时,它会查找 lib/nlp 位于父 uncertainty 目录中,其中存在 test2.py 文件。它找不到,因此您会收到 ImportError

修复

只需将 uncertainty/lib/nlp/__init__.py 文件中的 VERBS_PATH 赋值更改为

VERBS_PATH = resource_filename('uncertainty.uncertainty.lib.nlp', 'verbs.txt')

关于python - 从子子文件夹导入模块时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55121468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com