21

私はpythonの初心者です。

__requires__次のコードで何を意味するのか誰か答えてもらえますか? __requires__ = 'flower==0.4.0'なぜ彼らはファイルの先頭に入れるのでしょうか?

#!/srv/virtualenvs/zeusenv/bin/python

__requires__ = 'flower==0.4.0'
import sys
from pkg_resources import load_entry_point

sys.exit(
   load_entry_point('flower==0.4.0', 'console_scripts', 'flower')()
)
4

1 に答える 1

27

この__requires__行は、生成されたコンソール スクリプトの一部です。Python 自体には意味がなく、setuptoolsライブラリだけがこの情報を使用します。

コンソール スクリプトは、python パッケージ メタデータで定義された python スクリプトでありsetuptools、コマンド ライン スクリプトとして実行できるようにラッパー スクリプト ファイルをインストールします。virtualenvにインストールされるファイルは、パッケージファイルflowerで定義されたスクリプトです。flowersetup.py

pkg_resourcesラッパー スクリプトにインポートされたモジュールは、メイン スクリプトの値を調べて、関数 (またはその他の関数) が実行__requires__ される前に、正しいバージョンのライブラリが利用可能で読み込まれていることを確認します。指定されたバージョンはインストールされません。そのバージョンがシステムに既にインストールされていると想定されます。目的は、スクリプトが実行されて依存関係が読み込まれるときに、不適切で互換性のないリソースが読み込まれないようにすることです。load_entry_pointpkg_resources

于 2012-12-05T09:50:58.330 に答える