2016-08-08 4 views
4

今日、Windows 10システムでPython 2.7を使用して非常に奇妙なエラーが発生しました。ライブラリをインポートするときに別のスクリプトからのエラーメッセージが表示されない

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." 

はこれまでのところ、とても良い、これは完全に正常に動作し、行うことになっているものが行われます:バッチファイルを実行し、その出力で特定の文字列を探して、私は、Pythonスクリプト、このようなC:\Users\$me\copy.py見て何かを書きました文字列が見つかったかどうかに応じてメッセージを返します。

その後、OpenOPCライブラリをインストールしました。私はOpenOPCのインポートを含むpython script.pyを実行する場合

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は完璧に動作するので、エラーメッセージではありません。私は後で私を捕まえるかもしれない何かを何とかしぼったことを恐れている。

OpenOPC.pyでこのメッセージが印刷される可能性があるという手がかりが見つかりませんでした。

再起動後もエラーが発生します。

ここで何が起こったのですか?どうすれば修正できますか?

+1

あなたのスクリプトはどこにあり、何を呼びますか? – DeepSpace

+0

これは(元々) 'copy.py'と呼ばれ、' C:\ Users \ $ me'にあります。 '$ me'はこのマシンの私のユーザ名を表します。私は再起動後もエラーが続くことを言及していませんでした。 – Raketenolli

+0

'python -v'を試して、あなたの' copy.py'を探してください。 –

答えて

1

OpenOPCライブラリの前に(またはPythonがそれがその一部であると考えているので)あなたのスクリプトがインポートされている可能性があります。あなたのスクリプトはOpenOPC.pyなどと偶然呼ばれるのですか、それともpackage/folder hierarchyにありますか?

また、元のスクリプトはどこに保存しましたか? OpenOPCのパッケージ/モジュール階層にありますか?それはまた、いくつかの異常な場合に負荷を引き起こす可能性があります。最後に

:あなたは、あなたが通常してきたものより新しい/別のディレクトリからあなたのpython somescript.pysomescript.pyあなたの質問の上部にあるスクリプトの内容を含むものない場合)を実行する場合は、エラーの動作が再発しませんそれを実行している?

これらの調整はすべて、あなたのスクリプトがOpenOPCモジュールの一部として解釈される状況から問題を切り離そうとします。これは珍しい状況ですが、可能です。これらのステップのいずれかのために問題のある動作がなくなった場合は、スクリプトの移動/名前の変更を行います。

+0

これは、別のフォルダにOpenOPCをインポートしたときに何が起きたかを示す指標です。エラーメッセージは非常に役に立ちます: '>>> import OpenOPC [...] import win32pdh、win32api、time、thread、copy [...]ファイル" copy.py "、行6、 out = subprocess.check_output ( "do_stuff.bat") 'OpenOPCは明らかに元のコピーライブラリを自分のcopy.pyスクリプトに置き換えました – Raketenolli

+1

私は' copy.py'を削除しましたが、 'copy.pyc'はディレクトリに残っていました。そのファイルを削除した後もメッセージは表示されなくなります。 – Raketenolli

関連する問題