Python代码的行为因其所在位置而异';它是从

Python代码的行为因其所在位置而异';它是从,python,eclipse,notepad++,python-idle,Python,Eclipse,Notepad++,Python Idle,我正在使用Notepad++用Python编写一个应用程序,我发现它的执行方式不同,这取决于我如何启动它。此应用程序使用线程读取串行总线,同时还允许写入命令。它还提供了将控制台日志保存到文件的选项 在记事本++(使用NppExec)中,一切运行正常,因为这是我正在测试的地方 在Windows命令行中,我得到'AttributeError:'Logger'对象没有属性'errors'' 在空闲状态下,程序运行,但格式略有不同(从串行数据中读取每个字节后会出现额外的换行符) 在Eclipse中(使

我正在使用Notepad++用Python编写一个应用程序,我发现它的执行方式不同,这取决于我如何启动它。此应用程序使用线程读取串行总线,同时还允许写入命令。它还提供了将控制台日志保存到文件的选项

  • 在记事本++(使用NppExec)中,一切运行正常,因为这是我正在测试的地方
  • 在Windows命令行中,我得到'
    AttributeError:'Logger'对象没有属性'errors'
    '
  • 在空闲状态下,程序运行,但格式略有不同(从串行数据中读取每个字节后会出现额外的换行符)
  • 在Eclipse中(使用PyDev),它再次运行良好,尽管看起来是将换行代码加倍

他们对代码的解释似乎有所不同。这是一项正在进行的工作,所以我确信代码中存在错误,但是什么样的错误会产生如此不同的症状??我应该相信哪一个呢?

也许这是一种竞赛条件,它以不同的方式表达自己,这取决于系统的其余部分所承受的负载。例如,我希望记事本比命令行消耗更多的资源。解决方案是识别代码中的竞态条件,并使用锁或类似的方法加以防范。您可以使用不同的Python解释器或不同的环境变量(例如,不同的PYTHONPATH可能会产生很大的差异)来运行代码。变量太多,无法确保没有看到重现问题的代码。我使用N++进行了编辑,但仅从空闲和控制台运行python。除非ascii输出外,我将后者视为标准。由于Idle不使用日志模块,我很惊讶Idle不会得到与控制台相同的错误。