我今天在Windows 10系统上使用Python 2.7产生了一个非常奇怪的错误。我写了一个Python脚本,C:\Users\$me\copy.py
看起来像这样:
import subprocess
import sys
try:
out = subprocess.check_output("do_stuff.bat")
except subprocess.CalledProcessError as e:
print "Doing stuff failed."
do_stuff_did_something = out.find("String to be found in do_stuffs output.")
if do_stuff_did_something == -1:
print "Do_stuff didn't do it."
else:
print "Do_stuff did do it."
到目前为止,非常好,这完全正常并完成它应该做的事情:运行批处理文件,在其输出中查找特定字符串,并根据是否找到字符串返回消息或不。
之后的一段时间,我安装了OpenOPC库。在某些我不清楚记得的地方,这种情况开始发生了:
C:\Users\$me>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenOPC
Do_stuff did do it.
>>>
如果我运行包含OpenOPC导入的python script.py
,也会发生这种情况。任何其他库(我尝试过)都不会发生这种情况。并且它不是错误信息,因为OpenOPC工作得非常好。我只是害怕我搞砸了以后可能会抓到我的东西。
我无法在OpenOPC.py
中找到关于何时可以打印此邮件的线索。
重启后错误仍然存在。
那么这里发生了什么?我该如何解决?
答案 0 :(得分:1)
您的脚本可能在OpenOPC
库之前被导入(或因为Python认为它是其中的一部分)。您的脚本是偶然被称为OpenOPC.py
或类似的,还是位于package/folder hierarchy?
或者,您在哪里保存原始脚本?它是在OpenOPC的包/模块层次结构中吗?在某些不寻常的情况下,这也可能会引发其负担。
最后:如果您运行python somescript.py
(其中somescript.py
不包含问题顶部的脚本内容的那个),则错误行为会再次发生吗?新的/不同的目录,而不是你通常运行的目录?
所有这些调整都会尝试将问题与您的脚本被解释为OpenOPC模块的一部分的情况区分开来。这是一个不寻常的情况,但是可能的;如果由于任何这些步骤导致有问题的行为消失,请移动/重命名您的脚本。