新手到Python:导入的Lib

时间:2017-08-21 19:35:55

标签: python

我有这个结构

02.SensorTag/
    sensortag_example.py
    bluepy/bluepy/sensortag.py
    bluepy/bluepy/btle.py

所以sensortag_example.py正在导入sensortag.py

import bluepy
from bluepy.bluepy import sensortag

当我运行代码时,它抱怨从sensortag导入。

Traceback (most recent call last):
  File "sensortag_example.py", line 2, in <module>
    from bluepy.bluepy import sensortag 
  File "/home/pi/Development/02.SensorTag/bluepy/bluepy/__init__.py", line 3, in <module>
    from . import sensortag
  File "/home/pi/Development/02.SensorTag/bluepy/bluepy/sensortag.py", line 1, in <module>
    from bluepy.btle import UUID, Peripheral, DefaultDelegate, AssignedNumbers
ImportError: No module named 'bluepy.btle'

我试图添加一条新路径,但它没有用。如果我将程序移动到第一个文件夹bluepy并将导入更改为“from bluepy import sensortag”它可以工作,但我需要导入其他库,所以我不想让它在bluepy文件夹中。

我正在尝试运行此代码: https://gist.github.com/atotto/ae603b962115eef703c0011d8e652ea3

谢谢和最诚挚的问候, 埃杜

3 个答案:

答案 0 :(得分:2)

由于sensortag.pybtle.py位于同一目录中,因此请在导入前添加.

from .btle import UUID, Peripheral, DefaultDelegate, AssignedNumbers

这称为相对导入:https://docs.python.org/2.5/whatsnew/pep-328.html

答案 1 :(得分:1)

由于btle.py和sensortag.py都位于同一目录中,因此通过查看您的错误,我假设您尝试从以前的目录导入它。因此,来自sensortag.py的.btle import UUID应该解决问题。

答案 2 :(得分:1)

您应该创建两个 init .py文件。

02.SensorTag/
    sensortag_example.py
    bluepy/__init__.py
    bluepy/bluepy/__init__.py
    bluepy/bluepy/sensortag.py
    bluepy/bluepy/btle.py