在尝试以不同路径导入模块时发生Python导入错误
我是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/
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',
...
]
>>>
imultrasonicExample.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
。