找不到另一个目录中的模块

时间:2015-11-30 08:51:52

标签: python

我有项目结构:

/hdfs-archiver
   /logs
   /qe
      __init__.py
      /tests
         __init__.py
         archiver.py
      /utils
         __init__.py
         HdfsConnector.py

我正在尝试运行archiver.py,但我收到此错误:

Traceback (most recent call last):
  File "qe/tests/HdfsArchiver.py", line 8, in <module>
    from qe.utils import HdfsConnector
ImportError: No module named qe.utils

我看了一遍,似乎大多数遇到此问题的人都使用__init__.py

修复了此问题

当我pwd时:

$ pwd
/Users/bli1/Development/QE/idea/hdfs-archiver

PYTHONPATH中的.bashrc

export PYTHONPATH=$PYTHONPATH:/Users/bli1/Development/QE/idea/hdfs-archiver

我还尝试将PYTHONPATH作为

/Users/bli1/Development/QE/idea/hdfs-archiver/qe

2 个答案:

答案 0 :(得分:1)

您尝试将HdfsConnector导入为函数或类。包含HdfsConnector模块作为绝对导入的一部分:

from qe.utils.HdfsConnector import my_function

您也可以导入模块:

import qe.utils.HdfsConnector
# or
import qe.utils.HdfsConnector as HdfsConnector

答案 1 :(得分:1)

首先,您可以尝试相对导入,例如

from ..utils import HdfsConnector

由于__name__不同,您还需要将脚本作为模块而不是简单的python脚本运行。这不需要您修改路径。 您可以找到更多信息here