7

pkg_resources api を使用すると、ディレクトリ内の卵の配布を表す Distribution オブジェクトを取得できます。dist.project_nameandを使用して配布のプロジェクト名とバージョンを簡単に取得できdist.versionますが、セットアップスクリプトで通常指定される他のメタデータ (作成者、説明など) を取得する方法がわかりません。

4

2 に答える 2

-1

ここでも同じ問題。にハードコードされるすべての変数のpackage.py下にファイルを作成することで解決しました。次に:mymodulesetup.pysetup.py

pkg_info = get_package_info('mymodule')
setup(**pkg_info)

ただし、では、 setup.py が定義しているモジュールを必要とするため、setup.py直接できません。import mymodule.package as pkg_infoしたがって、次のカスタム インポート メソッドget_package_info(module_name)が必要ですsetup.py

def get_package_info(module_name):
    '''
    Read info about package version, author etc
    from <module_name>/package.py

    Return:
        dict {'version': '1.2.3', 'author': 'John Doe', ...}
    '''
    here = os.path.dirname(os.path.abspath(__file__))
    code_globals = {}
    code_locals = {}
    with open(os.path.join(here, module_name, 'package.py')) as f:
        code = compile(f.read(), "package.py", 'exec')
        exec(code, code_globals, code_locals)
    return code_locals

mymodule/package.py:_

# -*- coding: utf-8 -*-
name = 'mymodule'
version = '1.2.3'
description = 'My module for demonstration'
url = 'https://github.com/myorg/mymodule'
author = 'John Doe'
author_email = 'john.doe@example.com'

...

packages = ['mymodule']
install_requires = ['myotherpackage', 'somepackage']

...

この方法を使用すると、モジュールにアクセスできる場所ならどこでもパッケージ情報に簡単にアクセスできますfrom mymodule.package import version, author。また、情報は 1 か所にのみ保存する必要があります。

于 2016-03-09T14:09:23.623 に答える