【问题标题】:Python: problems with implementation of external modulePython:外部模块的实现问题
【发布时间】:2016-03-16 16:04:59
【问题描述】:

更新:我刚刚意识到,在我的 Python 3.4 中,win32com 包缺少哪个 comport 引用。 之前的模块是在 Python 2.7 环境中使用的。

我尝试调用模块外的方法,遇到如下问题:

import sys, serial
from external_source import  comport

class Controllerboard:
    def __init__(self):
        self.DUT_COMPORT = None

    def find_Comport(self):            
        comports = comport.scan_ports()
   .
   .
   .

在我调用的另一个模块中:

CBoard = Controllerboard()
CBoard.find_Comport()

执行我得到的脚本:UnboundLocalError: local variable 'comport' referenced before assignment

如果我将comport = None 放在comports =...之前, 我得到:AttributeError: 'NoneType' object has no attribute 'scan_ports'

我做错了什么?

【问题讨论】:

  • “执行我得到的脚本:UnboundLocalError: local variable 'comport' referenced before assignment”-您发布的代码没有显示任何会导致这种效果的内容。我们可以猜测您未显示的部分 - 例如,您可能不小心分配到了 comport 而不是某个地方的 comports - 但如果没有 MCVE,我们将无能为力。跨度>
  • 请定义 MCVE。在 find_Comport-code 不在类定义中之前。由于在我自己的工作空间中实现,我生成了一个类并集成了代码。

标签: python python-import


【解决方案1】:

如果它与您的脚本位于同一文件夹中,请尝试通过以下方式导入模块: 从 。导入文件

【讨论】:

  • 没有改善。我假设点的含义与文件夹的名称相同。
【解决方案2】:

您的函数find_Comport() 进行扫描,然后对结果不执行任何操作。它们保留在此函数的范围内,并在完成后被丢弃。您甚至没有将它们保存为self 的属性。

您必须将它们保存在任何地方,或者在函数结束时返回您找到的值。然后在主脚本调用

comports = CBoard.find_Comport()

所以返回的输出可以在这个新变量中访问。

【讨论】:

  • 抱歉没有说清楚。这只是一个sn-p的代码。但这是发生错误的那一行,所以没有必要发布其余部分。
  • @Creatronik:“这是错误发生的那一行,所以没有必要发布其余部分” - 这就像试图通过只看弹孔来调查谋杀案。我们需要更多的上下文。哎呀,您甚至没有发布整个错误消息 - 您取出了堆栈跟踪。
  • 好的,抱歉!如果我发布了其余的代码,那就很明显了,因为有一个变量与我尝试使用的模块的名称相同。
猜你喜欢
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 2012-12-01
  • 2012-11-14
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
相关资源
最近更新 更多