在尝试以不同路径导入模块时发生Python导入错误

在尝试以不同路径导入模块时发生Python导入错误,python,Python,我是python编程新手,遇到以下错误: Traceback (most recent call last): File "ultrasonicExample.py", line 7, in ? from concretesensor.hcsr04 import HCSR04 ImportError: No module named concretesensor.hcsr04 以下是我的应用程序结构: sensorPy/ src/

我是python编程新手,遇到以下错误:

Traceback (most recent call last):
File "ultrasonicExample.py", line 7, in ?
    from concretesensor.hcsr04 import HCSR04
ImportError: No module named concretesensor.hcsr04
以下是我的应用程序结构:

sensorPy/
        src/                                       
            abstractclass/                  
                  __init__.py
                 ultrasonicSensor.py
              ...
          concretesensor/                 
                  __init__.py
                  hcsr04.py
              ...
          examples/                 
                  __init__.py
                  ultrasonicExample.py
abstractclass下的my
\uuuuu init\uuuuuu.py

from abstractclass.ultrasonicSensor import UltrasonicSensor
混凝土传感器下的my
\uuuuu init\uuuuuu.py

from concretesensor.hcsr04 import HCSR04
我还检查了我的sys.path:

>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
 ...
 '/home/pi/Documents/sensorPy/src',
...
 ]
>>> 
im
ultrasonicExample.py
I确实:

from concretesensor.hcsr04 import HCSR04
from abstractclass.ultrasonicSensor import UltrasonicSensor
hcsr04.py中
I执行以下操作:

from concretesensor.hcsr04 import HCSR04
from abstractclass.ultrasonicSensor import UltrasonicSensor

有人知道我做错了什么吗?

你的
concretesensor
必须在
PYTHONPATH
中。另一种(更好的)方法是将路径添加到
sys.path

import sys
sys.path.append("/my/path")
尝试将相对路径插入到
sys.path
()


然后在根应用程序目录中写入
\uuuuu init\uuuuuuuuuuuuuuuuuuuuuupy

您的
\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuupy
应该只包含例如来自ultrasonicSensor的
导入ultrasonicSensor
。请导出PYTHONPATH='/home/pi/Documents/sensorPy/src',然后再次运行您的代码。谢谢Michael,我回家后会尝试这个。还有一些疑问:我应该把
code
sys.path.append(“....”)放在init.py中(在concretesensor下)吗?我认为这是没有必要的,因为当我这样做时:pprint(sys.path)会返回我“/home/pi/Documents/sensorPy/src”。当您说“在根应用程序目录中写入init.py”时,它意味着在src文件夹下或sensorPy文件夹下?将您的代码放置到
PYTHONPATH
例如
site package
中,并在任何地方使用它,而不使用
sys.path.append