. , package.py mymodule , setup.py. setup.py:
pkg_info = get_package_info('mymodule')
setup(**pkg_info)
setup.py import mymodule.package as pkg_info, , setup.py . setup.py get_package_info(module_name):
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:
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. , .