今日、Windows10システムでPython2.7を使用して、非常に奇妙なエラーが発生しました。私は次のC:\Users\$me\copy.py
ようなPythonスクリプトを作成しました。
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
このメッセージがいつ印刷されるかについての手がかりを見つけることができませんでした。
再起動後もエラーが続く。
では、ここで何が起こったのでしょうか。どうすれば修正できますか?
スクリプトがOpenOPC
ライブラリの前に(またはPythonがライブラリの一部であると見なしているために)インポートされている可能性があります。スクリプトは偶然に呼び出されたOpenOPC.py
か、類似していますか、それともパッケージ/フォルダー階層に存在しますか?
または、元のスクリプトをどこに保存しましたか?OpenOPCのパッケージ/モジュール階層にありますか?それはまた、いくつかの異常なケースでその負荷をトリガーする可能性があります。
最後に、通常実行しているディレクトリとは異なる新しいディレクトリから実行した場合python somescript.py
(質問の上部にスクリプトコンテンツが含まれているディレクトリでsomescript.py
はない場合)、エラー動作が再発しますか?
これらの調整はすべて、スクリプトがOpenOPCモジュールの一部として解釈される状況から問題を分離しようとします。これは珍しい状況ですが、可能です。これらの手順のいずれかによって問題のある動作が解消された場合は、スクリプトを移動/名前変更してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加