Makefile 与分类器

开发 Python 包

James Fulton

Climate informatics researcher

分类器

  • 您包的元数据
  • 帮助用户在 PyPI 上找到您的包
  • 应包含
    • 包状态
    • 目标受众
    • 许可证类型
    • 自然语言
    • 支持的 Python 版本
  • 更多分类器见 https://pypi.org/classifiers

在 mysklearn 的 setup.py

setup(
    ...
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
    ],
    ...
)
开发 Python 包

Makefile 的用途是什么?

  • 用于自动化包构建的部分步骤
mysklearn/
...
|-- README.md
|-- setup.py
|-- Makefile  <---
...
开发 Python 包

Makefile 包含什么?

Makefile

...

dist: ## 构建源码包与轮子包
    python3 setup.py sdist bdist_wheel

clean-build: ## 移除构建产物 rm -fr build/ rm -fr dist/ rm -fr .eggs/
test: ## 用默认 Python 快速运行测试 pytest
release: dist ## 打包并上传发布版 twine upload dist/*
开发 Python 包

如何使用 Makefile?

make <function-name>
mysklearn/ <--- 先进入此目录
...
|-- README.md
|-- setup.py
|-- Makefile  
...
开发 Python 包

如何使用 Makefile?

在终端中运行 dist 功能

make dist

Makefile

...

dist: ## 构建源码包与轮子包
    python3 setup.py sdist bdist_wheel

clean-build: ## 移除构建产物
    rm -fr build/
    rm -fr dist/
    rm -fr .eggs/

test: ## 用默认 Python 快速运行测试
    pytest

release: dist ## 打包并上传发布版
    twine upload dist/*
开发 Python 包

Makefile 小结

make help
clean                移除所有构建、测试、覆盖率与 Python 产物
clean-build          移除构建产物
clean-pyc            移除 Python 文件产物
clean-test           移除测试与覆盖率产物
lint                 使用 flake8 检查风格
test                 用默认 Python 快速运行测试
test-all             用 tox 在所有 Python 版本上运行测试
release              打包并上传发布版
dist                 构建源码包与轮子包
install              安装到当前 Python 的 site-packages
开发 Python 包

Vamos praticar!

开发 Python 包

Preparing Video For Download...