导入文件名冲突

时间:2014-01-08 14:23:32

标签: python import serial-port

我正在尝试开发一个模拟类,用于替换特定应用程序中的serial(Win7,python 2.7)。

我有一个适用于多个应用程序的SerialHandle类,它的工作是为众所周知的串行方法添加逻辑,其目的是用一个同名的虚拟文件替换python serial.py所以我们不必在SerialHandle更改和导入。

现在我的文件与Serial类一样,就像原点一样,它运行正常:

serial.py
...Serial()

因为我想真正模拟我需要来自SerialException的{​​{1}}的方法 所以在我的serial.py中我试图使用以下方法导入它:

serialutil

但正如预期的那样,我会在from serial import SerialException首先转到本地文件后获得此加注:

from serial

我理解问题是文件名,因为在任何其他文件中它都可以工作......

我试过Traceback (most recent call last): File "C:/CROW/ATE/DUTDrivers/DD_SimulatorExample/DD_SimulatorExample.py", line 18, in <module> from Utilities.Serial.SerialHandle.trunk.SerialHandle import SerialHandle File "C:\CROW\ATE\Utilities\Serial\SerialHandle\trunk\__init__.py", line 4, in <module> from Utilities.Simulator import serial File "C:\CROW\ATE\Utilities\Simulator\serial.py", line 11, in <module> from serial import SerialException ImportError: cannot import name SerialException 没有运气。

问题:

  1. 是否可以告诉解释器忽略特定from..import的本地文件?

  2. 是否有其他方法可以从绝对路径导入?

  3. 注意:

    1. 文件命名为sys.append(site-packages....serial.py)不是决定它是一个定义所以更改名称是不相关的......

    2. 重载python serial也不是一个选项......

1 个答案:

答案 0 :(得分:3)

你必须使用python 2.x,因为绝对导入是python 3.x中的默认导入。您可以在 serial.py 文件中使用绝对导入,方法是在文件顶部添加:

from __future__ import absolute_import

请注意,您需要将 serial.py 文件中的任何隐式相对导入转换为显式相对导入。因此,如果您要从同一目录中的some_func导入other_file.py,则需要将其更改为:

from .other_file import some_func

请注意“。”表示从与当前文件相同的包中的相对导入。有关其他详细信息,请参阅here