1、write_version_py
读取.git中哈希值,mmcls包下VERSION文件内容,将信息写入mmcls包下的version.py文件中。写入字符串格式如下:
content = """# GENERATED VERSION FILE
# TIME: {}
__version__ = '{}'
short_version = '{}'
version_info = ({})
"""
字符串格式化逻辑如下:
version_file_str = content.format(time.asctime(), VERSION, SHORT_VERSION, VERSION_INFO)
最终version.py文件如下:
# GENERATED VERSION FILE
# TIME: Wed Aug 5 13:52:59 2020
__version__ = '0.1.0+unknown'
short_version = '0.1.0'
version_info = (0, 1, 0)
字符串格式化参考:https://blog.csdn.net/weixin_34910922/article/details/106677370
2、执行setuptools下的setup函数
setup函数实现包的安装,编译、链接等处理。将mmcls配置成当前python环境可引用包。
setup(
name='mmcls',
version=get_version(), # '0.1.0+unknown'
description='OpenMMLab Image Classification Toolbox and Benchmark',
long_description=readme(), # 将README.md内容写入包
author='OpenMMLab',
author_email='yangleidev@gmail.com',
keywords='computer vision, image classification',
url='https://github.com/open-mmlab/mmclassification',
packages=find_packages(exclude=('configs', 'tools', 'demo')),
package_data={'mmcls.ops': ['*/*.so']}, # ?
classifiers=[
'Development Status :: 4 - Beta',
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
license='Apache License 2.0',
setup_requires=parse_requirements('requirements/build.txt'),
tests_require=parse_requirements('requirements/tests.txt'),
install_requires=parse_requirements('requirements/runtime.txt'),
extras_require={
'all': parse_requirements('requirements.txt'),
'tests': parse_requirements('requirements/tests.txt'),
'build': parse_requirements('requirements/build.txt'),
},
zip_safe=False)
关键参数:
1、打包文件
packages:
find_packages()返回当前目录下,所有包名称。执行结果如下:
find_packages()
=>
['mmcls', 'mmcls.models', 'mmcls.datasets', 'mmcls.apis', 'mmcls.core', 'mmcls.utils', 'mmcls.models.backbones',
'mmcls.models.losses', 'mmcls.models.classifiers', 'mmcls.models.necks', 'mmcls.models.utils', 'mmcls.models.heads',
'mmcls.datasets.samplers', 'mmcls.datasets.pipelines', 'mmcls.core.evaluation', 'mmcls.core.fp16', 'mmcls.core.utils']
package_data:不确定含义。
2、安装依赖
不同情况时使用安装不同依赖。
setup_requires=parse_requirements('requirements/build.txt'), # 安装依赖库。
tests_require=parse_requirements('requirements/tests.txt'), # 测试时依赖库。
install_requires=parse_requirements('requirements/runtime.txt'), # 运行时依赖库。
extras_require={ # 其它依赖库。
'all': parse_requirements('requirements.txt'),
'tests': parse_requirements('requirements/tests.txt'),
'build': parse_requirements('requirements/build.txt'),
},
传送门:mmclassification项目阅读系列文章目录
源码阅读: