他のPythonモジュールを読むと、多くの人が__version__
と__author__
のグローバル変数をソースファイルに含めることがよくあります(それはPEP3001にも言及されています)。私はこれらの変数の合理的なセットで私のコードを文書化したいと思います。よく含まれる可能性のあるグローバル変数のリストは何ですか?Pythonモジュールの場合、宣言する標準グローバル変数は何ですか?
答えて
これらのグローバル変数には特定の標準はありません。リンクしたPEPに記載されているように、これは標準を達成しようとしたものの、普遍的ないかなる形式でも受け入れられていません。
実際の標準は、distutils
(または互換インタフェース)を使用して、モジュールのsetup.py
ファイルで指定されているPyPIメタデータです。
from distutils.core import setup
setup(
name='TowelStuff',
version='0.1.0',
author='J. Random Hacker',
author_email='[email protected]',
packages=['towelstuff', 'towelstuff.test'],
scripts=['bin/stowe-towels.py','bin/wash-towels.py'],
url='http://pypi.python.org/pypi/TowelStuff/',
license='LICENSE.txt',
description='Useful towel-related stuff.',
long_description=open('README.txt').read(),
install_requires=[
"Django >= 1.1.1",
"caldav == 0.1.4",
],
)
(IIUC)distutilsが出ていることに注意してください。たとえば、 'setup(...)'は 'setup.cfg'の静的メタデータに置き換えられます。これが現実に近づくのにどれくらい近いのか全く分かりません。 – delnan
使用distutils
(またはスーパーセットsetuptools
)の代わりに、あなたのプロジェクトについてのメタデータを提供する:ここでは包装のチュートリアルからの例です。
特に、setuptools
を使用している場合、そのメタデータは、pkg_resources
moduleによって検出可能で再利用可能です。
__version__
のようなグローバル変数の標準はなく、Pythonのstdlibでさえそうではありません。なぜなら、このメタデータをPython 3のstdlibに提供しようとする努力は何もないからです。
Python Packaging User Guideは、プロジェクトを適切にパッケージ化する方法の初歩としてお勧めします。
*このメタデータをPython 3用のstdlibに提供するための努力は何もされていません* - 参考にしてください。また、いくつかのstdlibパッケージがメタデータを持つ理由とそうでないものがある理由を説明することができます - https://github.com/pypa/pip/issues/1570 –
を参照してくださいhttps://mail.python.org/pipermail/python -dev/2012-June/120430.html; 'distutils2'は新しいメタデータの形式と努力で十分な牽引力を得られませんでした。 *いくつかの* stdlibライブラリのメタデータについては、stdlibにマージされた最初の独立したプロジェクトだったと思います。 –
- 1. MATLABでグローバル変数を宣言する
- 2. グローバル変数宣言問題
- 3. Pythonとグローバル宣言
- 4. グローバルなRequest.ServerVariable変数を宣言する
- 5. "=="条件を宣言するための標準ガイドラインは何ですか?
- 6. モジュールをPython標準ライブラリからローカルディレクトリにインストールする標準的な方法は何ですか?
- 7. Pythonモジュールをリリースするための標準パターンは何ですか?
- 8. この状況でグローバル変数を宣言するには?
- 9. Pythonモジュール内でクラスを宣言する
- 10. proc宣言のTclグローバル変数
- 11. 幾何学的点をエミュレートするためのPython標準モジュール
- 12. PHPでグローバル変数を宣言するには?
- 13. Reactでグローバル変数を宣言する方法は?
- 14. pythonの標準ライブラリのsimplejsonとモジュールの主な違いは何ですか?
- 15. Pythonの "グローバル"(モジュール)変数はスレッドローカルですか?
- 16. グローバル変数をQMLファイルで宣言できますか?
- 17. Ext.Componentをグローバル変数として宣言できますか?
- 18. 宣言時に変数に値を代入する場合
- 19. コード・イグナイターでは、グローバル変数はどこで宣言すべきですか?
- 20. .jsファイルでグローバル変数を宣言する方法
- 21. AngularJsでグローバル変数を宣言する方法2
- 22. Javascriptでグローバル変数を宣言する方法
- 23. Python関数:グローバル変数にアクセスする場合にのみ渡しますか?
- 24. AS3グローバル変数をどのように宣言しますか?
- 25. Angular2 CanActivateグローバル関数宣言
- 26. Fortranモジュールでインテント変数を宣言できますか?
- 27. このenum宣言は標準に準拠していますか?
- 28. TypeScriptのグローバル名前空間変数を宣言する
- 29. 業界標準のデータベースモデリング言語とは何ですか?
- 30. ウェブページ内のグローバルJavaScript変数はどこで宣言しますか?
個人的には、私は '__....__'の名前が* python *に属しているという理由だけで、私のモジュールが乱雑にならないようにしています。 (例えば、クラスを初期化するための '__init__')...ある時点で(PEPまたはドキュメントで)標準化されると、私は自分の意見を変更するかもしれません。 – mgilson
PEP3001を指摘しますが、そのPEP( "Python Enhancment _Proposal_")は "取り消されました"。したがって、PEPの言葉は「標準」とみなすべきではありません。あなたはステータスフラグを見逃したかもしれませんが、その場合には[PEP 1](http://www.python.org/dev/peps/pep-0001/)へのリンクを含めます。 PEPプロセスが動作します。 –
@mgilson - これは公正なコメントです。私は、たとえそのほとんど標準化されていないグローバル変数であっても、 "自己文書化"コードを持つという考えが好きです。しかし同時に、 '__...__'はPythonに属しているので、どこから来ているのか分かります。 –