代码之家  ›  专栏  ›  技术社区  ›  ted

路径中包含包的moduleNotFounderror

  •  2
  • ted  · 技术社区  · 6 年前

    我有以下文件结构

    .
    └── text_classifier
        ├── Experiment.py
        ├── __init__.py
        ├── constants.py
        ├── hyperparameters
        │   ├── Hyperparameter.py
        │   └── __init__.py
        ├── models
        │   ├── __init__.py
        │   ├── han.py
        │   └── model.py
        ├── trainers
        │   ├── __init__.py
        │   ├── dataset_trainer.py
        │   └── trainer.py
        └── utils
            ├── __init__.py
            ├── default_conf.yml
            ├── tf_utils.py
            └── utils.py
    

    我想 import text_classifier 从ipython控制台。

    text_classifier/__init__.py 包含

    import builtins
    import sys
    import os
    
    sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
    sys.path.append(os.path.dirname(os.path.dirname(__file__)))
    sys.path.append(os.path.dirname(__file__))
    sys.path.append(__file__)
    
    print('\n'.join(sys.path))
    
    from .experiment import Experiment
    from .hyperparameters import HP
    
    try:
        from IPython.lib import deepreload
    
        builtins.reload = deepreload.reload
    except:
        pass
    

    不管怎样运行 import text_classifier as tcl 来自同一地点 text_classifier 产生以下结果:

    /Users/victor/.pyenv/versions/3.6.4/Python.framework/Versions/3.6/lib/python36.zip
    /Users/victor/.pyenv/versions/3.6.4/Python.framework/Versions/3.6/lib/python3.6
    /Users/victor/.pyenv/versions/3.6.4/lib/python3.6/lib-dynload
    /Users/victor/.pyenv/versions/3.6.4/Python.framework/Versions/3.6/lib/python3.6/site-packages
    /Users/victor/.pyenv/versions/3.6.4/lib/python3.6/site-packages
    /Users/victor/.pyenv/versions/3.6.4/Python.framework/Versions/3.6/lib/python3.6/site-packages/IPython/extensions
    /Users/victor/.ipython
    /Users/victor/Documents/documentation
    /Users/victor/Documents/documentation/han
    /Users/victor/Documents/documentation/han/text_classifier
    /Users/victor/Documents/documentation/han/text_classifier/__init__.py
    ---------------------------------------------------------------------------
    ModuleNotFoundError                       Traceback (most recent call last)
    <ipython-input-1-256767c7aff3> in <module>()
    ----> 1 import text_classifier as tl
    
    ~/Documents/documentation/han/text_classifier/__init__.py in <module>()
        10 print('\n'.join(sys.path))
        11
    ---> 12 from .experiment import Experiment
        13 from .hyperparameters import HP
        14
    
    ModuleNotFoundError: No module named 'text_classifier.experiment'
    

    很明显, 文本分类器 在路上( ...documentation/han/text_classifier )中。有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Druta Ruslan    6 年前

    这个 Experiment.py 模块有大写字母 E ,但您导入 experiment 你没有这个模块

    .
    └── text_classifier
        ├── Experiment.py
    ...
    

    我想你需要这样进口

    # text_classifier/__init__.py
    # if you have `Experiment` class
    from .Experiment import Experiment
    
    # or simple import `Experiment` module
    from . import Experiment