2013-01-21 17 views
7

他のPythonモジュールを読むと、多くの人が__version____author__のグローバル変数をソースファイルに含めることがよくあります(それはPEP3001にも言及されています)。私はこれらの変数の合理的なセットで私のコードを文書化したいと思います。よく含まれる可能性のあるグローバル変数のリストは何ですか?Pythonモジュールの場合、宣言する標準グローバル変数は何ですか?

+2

個人的には、私は '__....__'の名前が* python *に属しているという理由だけで、私のモジュールが乱雑にならないようにしています。 (例えば、クラスを初期化するための '__init__')...ある時点で(PEPまたはドキュメントで)標準化されると、私は自分の意見を変更するかもしれません。 – mgilson

+1

PEP3001を指摘しますが、そのPEP( "Python Enhancment _Proposal_")は "取り消されました"。したがって、PEPの言葉は「標準」とみなすべきではありません。あなたはステータスフラグを見逃したかもしれませんが、その場合には[PEP 1](http://www.python.org/dev/peps/pep-0001/)へのリンクを含めます。 PEPプロセスが動作します。 –

+0

@mgilson - これは公正なコメントです。私は、たとえそのほとんど標準化されていないグローバル変数であっても、 "自己文書化"コードを持つという考えが好きです。しかし同時に、 '__...__'はPythonに属しているので、どこから来ているのか分かります。 –

答えて

2

これらのグローバル変数には特定の標準はありません。リンクした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", 
    ], 
) 

http://guide.python-distribute.org/creation.html

+1

(IIUC)distutilsが出ていることに注意してください。たとえば、 'setup(...)'は 'setup.cfg'の静的メタデータに置き換えられます。これが現実に近づくのにどれくらい近いのか全く分かりません。 – delnan

1

使用distutils(またはスーパーセットsetuptools)の代わりに、あなたのプロジェクトについてのメタデータを提供する:ここでは包装のチュートリアルからの例です。

特に、setuptoolsを使用している場合、そのメタデータは、pkg_resources moduleによって検出可能で再利用可能です。

__version__のようなグローバル変数の標準はなく、Pythonのstdlibでさえそうではありません。なぜなら、このメタデータをPython 3のstdlibに提供しようとする努力は何もないからです。

Python Packaging User Guideは、プロジェクトを適切にパッケージ化する方法の初歩としてお勧めします。

+0

*このメタデータをPython 3用のstdlibに提供するための努力は何もされていません* - 参考にしてください。また、いくつかのstdlibパッケージがメタデータを持つ理由とそうでないものがある理由を説明することができます - https://github.com/pypa/pip/issues/1570 –

+0

を参照してくださいhttps://mail.python.org/pipermail/python -dev/2012-June/120430.html; 'distutils2'は新しいメタデータの形式と努力で十分な牽引力を得られませんでした。 *いくつかの* stdlibライブラリのメタデータについては、stdlibにマージされた最初の独立したプロジェクトだったと思います。 –

関連する問題