7

私は以下を含むPython2.6/2.7コードに取り組んでいます:

try:
    import gmpy
    gmpy_imported=True
except ImportError:
    gmpy_imported=False

if gmpy_imported and gmpy.__file__ is None:
    gmpy_imported=False

try-exceptgmpyがシステムにインストールされているかどうかを確認するために使用される部分を理解できます。インストールされていない場合は、何でも実行できます。if gmpy.__file__ is Noneしかし、なぜチェックが必要なのかわかりません。冗長なようです。

パッケージのインポートが成功したように見えても、パッケージへのパスが実際には空であるという状況はありますか?これは、破損したインストールに対するフェイルセーフを再確認しますか?

4

2 に答える 2

2

このチェックに意味はありません。モジュール/パッケージが正常にインポートされた場合、__file__none になることはなく、モジュールのパスになります。

于 2013-02-20T00:25:03.337 に答える
2

ドキュメント__file__には、「インタープリターに静的にリンクされている C モジュールには属性が存在しない」と記載されているため、冗長であると思います。さらに、モジュール オブジェクトが存在することで、どのような違いが生じるでしょうか。

于 2013-02-20T00:26:34.193 に答える