Flask 源码解析-1.安装配置

1.源码结构

flask 的安装配置符合 python package 的基本模式,写在源码安装包的最外层路径 setup.py 文件中

image

artwork/ 用于存放 flask logo
docs/ 用于存放文件说明
examples/ 用于存放代码示例
src/ 用于存放源码
tests/ 用于存放测试代码

2.包安装

setup.py 是 python 程序用于跨平台安装的说明
命令行中的 make && make install 会被翻译为 python setup.py build && python setup.py install

一些 package 是纯编译后的字节码,可以直接安装,
另一些包含源码,需要本地编译器(例如 gcc 或者 cl)和 python interfacing module (例如 swig 或者 prex) 编译

setup.py 往往是和 pip install 平行的另一个选项,当 pip install fail 的时候可以用 setup.py 来安装
简单说明:setup.py 类似于 install functions 中的 __main__

3.setup.py

该文件的核心代码解析如下:
setup()setup.py 的核心代码,首先定义了项目基本信息,包括发布包的名字、版本、项目主页、证书、作者等。开源项目的项目主页一般会链接到 github,gitlab,bitbucket 等处。

setup(
    name='Flask',  # 发布包的名字
    version=version,  # 包版本
    url='https://www.palletsprojects.com/p/flask/',  # 项目主页
    project_urls={
        "Documentation": "https://flask.palletsprojects.com/",
        "Code": "https://github.com/pallets/flask",
        "Issue tracker": "https://github.com/pallets/flask/issues",
    },
    license="BSD-3-Clause",  # 证书
    author="Armin Ronacher",  # 作者
    author_email="[email protected]",  # 作者联系方式
    maintainer="Pallets",  # 维护者
    maintainer_email="[email protected]",  # 维护者联系方式
    description="A simple framework for building complex web applications.",  # 项目描述
    long_description=readme,  # 项目详细描述
    classifiers=[
        "Development Status :: 5 - Production/Stable",
        "Environment :: Web Environment",
        "Framework :: Flask",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: BSD License",
        "Operating System :: OS Independent",
        "Programming Language :: Python",
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 2.7",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.5",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
        "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
        "Topic :: Software Development :: Libraries :: Application Frameworks",
        "Topic :: Software Development :: Libraries :: Python Modules",
    ]
)

然后 setup() 定义了 package 的源码信息,packages=find_packages("src"),通常这一步可以自动检索,这里自动检索 src 目录下的包,只有 flask,也可以指定项目的包,比如 packages="flask/src/flask"

setup(
    packages=find_packages("src"),  # 包中需要包含的引用包
    package_dir={"": "src"},
    include_package_data=True,
    python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
    install_requires=[  # 安装需求
        "Werkzeug>=0.15",
        "Jinja2>=2.10.1",
        "itsdangerous>=0.24",
        "click>=5.1",
    ],
    extras_require={
        "dotenv": ["python-dotenv"],
        "dev": [
            "pytest",
            "coverage",
            "tox",
            "sphinx",
            "pallets-sphinx-themes",
            "sphinxcontrib-log-cabinet",
            "sphinx-issues",
        ],
        "docs": [
            "sphinx",
            "pallets-sphinx-themes",
            "sphinxcontrib-log-cabinet",
            "sphinx-issues",
        ],
    },
    # 控制台启动入口,定位到入口函数,这里的路径是 clask.cli,函数名是 main
    entry_points={"console_scripts": ["flask = flask.cli:main"]}
)

你可能感兴趣的:(Flask 源码解析-1.安装配置)