他の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. React.jsのグローバル変数宣言のベストプラクティスは何ですか?
- 2. MATLABでグローバル変数を宣言する
- 3. Vue.jsでグローバル変数を宣言する最良の方法は何ですか?
- 4. Gradleのグローバル変数宣言
- 5. "=="条件を宣言するための標準ガイドラインは何ですか?
- 6. Pythonでグローバル変数を宣言する方法
- 7. 定数の宣言とグローバルとの違いは何ですか?
- 8. グローバル変数宣言問題
- 9. グローバルなRequest.ServerVariable変数を宣言する
- 10. グローバル変数を宣言する
- 11. Pythonとグローバル宣言
- 12. グローバル変数として宣言することなく、Pythonでグローバル変数を使用できますか?
- 13. モジュールをPython標準ライブラリからローカルディレクトリにインストールする標準的な方法は何ですか?
- 14. Pythonモジュールをリリースするための標準パターンは何ですか?
- 15. Pythonで複数のモジュールで使用する変数を宣言する方法
- 16. この状況でグローバル変数を宣言するには?
- 17. グローバル変数は、私はheader.phpのファイルにJavaScriptでグローバル変数を宣言
- 18. Pythonモジュールのグローバル変数
- 19. 異なるモジュールでグローバルにパイプを宣言する方法は?
- 20. Pythonクラスがグローバル変数をグローバルに宣言せずにグローバル変数を変更しています
- 21. 幾何学的点をエミュレートするためのPython標準モジュール
- 22. proc宣言のTclグローバル変数
- 23. Pythonモジュール内でクラスを宣言する
- 24. PHPでグローバル変数を宣言するには?
- 25. SQL Serverでグローバル変数を宣言する方法は?
- 26. Reactでグローバル変数を宣言する方法は?
- 27. typescriptでグローバル変数を宣言するには?
- 28. pythonの標準ライブラリのsimplejsonとモジュールの主な違いは何ですか?
- 29. インストールアプリケーションが変更されない場合の標準標準オブジェクトレイアウト
- 30. Scala akka:受信関数内でグローバル変数を宣言する
個人的には、私は '__....__'の名前が* python *に属しているという理由だけで、私のモジュールが乱雑にならないようにしています。 (例えば、クラスを初期化するための '__init__')...ある時点で(PEPまたはドキュメントで)標準化されると、私は自分の意見を変更するかもしれません。 – mgilson
PEP3001を指摘しますが、そのPEP( "Python Enhancment _Proposal_")は "取り消されました"。したがって、PEPの言葉は「標準」とみなすべきではありません。あなたはステータスフラグを見逃したかもしれませんが、その場合には[PEP 1](http://www.python.org/dev/peps/pep-0001/)へのリンクを含めます。 PEPプロセスが動作します。 –
@mgilson - これは公正なコメントです。私は、たとえそのほとんど標準化されていないグローバル変数であっても、 "自己文書化"コードを持つという考えが好きです。しかし同時に、 '__...__'はPythonに属しているので、どこから来ているのか分かります。 –