0

私が達成したいことは次のとおりです。

私は python パッケージを持っています。それを と呼びましょう。通常の使用では、最上位の名前空間にインポートされるコンパイル済み拡張ライブラリ (またはファイル)を含むfooディレクトリで構成されます。foo__init__.py.so.pyd__init__.py

setup.pyさて、問題は、拡張ライブラリが必ずしも利用可能ではない (まだ構築されていない) 場合に、構築およびパッケージ化中に利用可能なバージョン文字列を最上位の名前空間に含めたいImportErrorことfoo.versionです。

さて、明らかに、__init__.py何かをインポートする際の失敗を無視する例外ハンドラーを使用できますが、パッケージをインポートできない理由をユーザーが気にする本当の理由がある可能性があるため、これは理想的ではありません。

バージョン文字列をパッケージ内の 1 つの場所に配置し、インポート可能にする方法はありますか?

4

1 に答える 1

2

インポート時に失敗を無視するのではなく、トレース メッセージまたは警告を出力して、ユーザーが引き続き否定的なフィードバックを受け取るようにします。

Python 3.3+ (または Python 2.7) を使用している場合の特定のサブファイルのインポートに関しては、インポートするファイルのパス名を受け入れる imp.load_source を使用できます。

于 2013-09-19T20:23:24.790 に答える