gpt4 book ai didi

python - 导入时文件名冲突

转载 作者:行者123 更新时间:2023-11-30 23:29:42 32 4
gpt4 key购买 nike

我正在尝试开发一个模拟类来替代特定应用程序(Win7、python 2.7)中的serial

我有一个在许多应用程序中工作的SerialHandle类,它的工作是将逻辑添加到众所周知的串行方法中,其想法是替换pythonserial.py使用同名的虚拟文件,这样我们就不必在 SerialHandle 处进行更改和导入。

现在我有了这个带有 Serial 类的文件,就像源一样,它工作正常:

serial.py
...Serial()

因为我想真正模拟我需要来自 serialutilSerialException 的方法所以在我的serial.py中我尝试使用以下命令导入它:

从串行导入 SerialException

但正如预期的那样,我会得到这个提升,因为从串行首先转到本地文件:

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

我知道问题出在文件名上,因为在任何其他文件中它都可以工作......

我尝试过sys.append(site-packages....serial.py)但没有成功。

问题:

  1. 有什么方法可以告诉解释器忽略特定 from..import 处的本地文件?

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

注释:

  1. 将文件命名为 serial.py 不是一个决定,而是一个定义,因此更改名称并不相关...

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

最佳答案

您必须使用 python 2.x,因为绝对导入是 python 3.x 中的默认设置。您可以通过在文件顶部添加以下内容,在 serial.py 文件中使用绝对导入:

from __future__ import absolute_import

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

from .other_file import some_func

请注意“.”表示从与当前文件相同的包中进行相对导入。请参阅here了解更多详细信息。

关于python - 导入时文件名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998275/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com