我有项目结构:
/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
答案 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。