Сообщение об ошибке из другого script при импорте библиотеки

Сегодня я выпустил очень странную ошибку, используя Python 2.7 в системе Windows 10. Я написал Python script, 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.
>>>

Это также происходит, если я запускаю python script.py, включая импорт OpenOPC. Это не происходит с другими библиотеками (которые я пытался). И это не сообщение об ошибке, так как OpenOPC работает отлично. Я просто боюсь, что я как-то испортил то, что могло бы поймать меня позже.

Я не мог найти ключ в OpenOPC.py, когда это сообщение может быть напечатано.

Ошибка сохраняется после перезагрузки.

И что здесь произошло? Как я могу это исправить?

1 ответ

Возможно, ваш script импортируется ранее (или потому, что Python считает его частью) библиотекой OpenOPC. Ваш script, случайно названный OpenOPC.py или похожий, или он находится в иерархии пакетов/папок?

В качестве альтернативы, где вы сохранили исходный script? Является ли он в иерархии пакетов/модулей OpenOPC? Это может также вызвать его загрузку в некоторых необычных случаях.

И последнее: повторяется ли поведение ошибки, если вы запустите свой python somescript.py (где somescript.py не тот, который содержит контент script в верхней части вашего вопроса) из нового/другого каталога, чем тот, вы обычно запускали его?

Все эти настройки будут пытаться изолировать проблему от ситуации, когда ваш script интерпретируется как часть модуля OpenOPC. Это необычная ситуация, но это возможно; если проблемное поведение уходит из-за любого из этих шагов, переместите/переименуйте script.

licensed under cc by-sa 3.0 with attribution.