您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    如何树立一个完美的 Python 项目
    时间:2021-03-05 12:01 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    如何树立一个完美的 Python 项目

    当末尾一个新的 Python 项目时,大家很容易一头扎出来就末尾编码。其实花一点时间选择优秀的库,将为以后的开发节省少量时间,并带来更快乐的编码体验。

    在理想世界中,一切开发人员的关系是相互依赖和关联的(协作开发),代码要有完美的格式、没有低级的错误、并且测试掩盖了一切代码。另外,一切这些将在每次提交时都可以失掉保证。(代码作风一致、类型检测、测试掩盖率高、自动检测)

    在本文中,我将引见如何树立一个可以做到这些点的项目。您可以按照步骤操作,也可以直接跳到 运用 cookiecutter 生成项目  部分(新手)。

    首先,让我们创立一个新的项目目录:

    mkdir best_practices 

    cd best_practices 

    pipx 安装 Python 三方库的命令行工具

    Pipx [2] 是一个可用于快速安装 Python 三方库的命令行工具。我们将运用它来安装 pipenv 和 cookiecutter。经过下面的命令安装 pipx:

    python3 -m pip install --user pipx 

    python3 -m pipx ensurepath 

    运用 pipenv 停止依赖管理

    Pipenv [3] 为您的项目自动创立和管理 virtualenv(虚拟环境),并在安装/卸载软件包时从 Pipfile 添加/删除软件包。它还会生成十分重要的 Pipfile.lock 用于保证依赖的牢靠性。

    当你知道,你和你的队友正在运用相反的库版本时,这将会极大地提高编程的决计和乐趣。Pipenv 很好地处置了运用相反的库,版本不同的这一成绩,Pipenv 在过去的一段时间里取得了普遍的关注和认可,你可以担忧运用。安装命令如下:

    pipx install pipenv 

    运用 black 和 isort 停止代码格式化

    black [4] 可以格式化我们的代码:

    Black 是毫不妥协的 Python 代码格式化库。经过运用它,你将保持手动调整代码格式的细节。作为报答,Black 可以带来速度、确定性和避免调整 Python 代码作风的懊恼,从而有更多的精神和时间放在更重要的事情上。

    无论你正在阅读什么样的项目,用 black 格式化过的代码看起来都差不多。一段时间后格式不再是成绩,这样你就可以更专注于内容。

    black 经过增加代码的差异性,使代码反省更快。

    而 isort [5] 是对我们的 imports 部分停止排序:

    isort 为您导入的 Python 包部分(imports)停止排序,因此你不必再对 imports 停止手动排序。它可以按字母顺序对导入停止排序,并自动将其拆分红多个部分。

    运用 pipenv 安装它,以便它们不会使部署混乱(可以指定只在开发环境安装):

    pipenv install black isort --dev 

    Black 和 isort 并不兼容的默许选项,因此我们将让 isort 遵照 black 的准绳。创立一个 setup.cfg 文件并添加以下配置:

    [isort] 

    multi_line_output=3 

    include_trailing_comma=True 

    force_grid_wrap=0 

    use_parentheses=True 

    line_length=88 

    我们可以运用以下命令运转这些工具:

    pipenv run black 

    pipenv run isort 

    运用 flake8 保证代码作风

    Flake8 确保代码遵照 PEP8 中定义的标准 Python 代码标准。运用 pipenv 安装:

    pipenv install flake8 --dev 

    就像 isort 一样,它需求一些配置才能很好地与 black 配合运用。将这些配置添加到 setup.cfg :

    [flake8] 

    ignore = E203, E266, E501, W503 

    max-line-length = 88 

    max-complexity = 18 

    select = B,C,E,F,W,T4 

    如今我们可以运转 flake8 了,命令: pipenv run flake8 。

    运用 mypy 停止静态类型反省

    Mypy [6] 是 Python 的非强迫的静态类型反省器,旨在结合静态(或 “鸭子”)类型和静态类型的优点。Mypy 将 Python 的表达才能和便利性与功用弱小的类型系统的编译时类型反省结合在一同,运用任何 Python VM 运转它们,基本上没有运转时开支。

    在 Python 中运用类型需求一点时间来顺应,但是益处却是庞大的。如下:

    静态类型可以使顺序更易于了解和维护

    静态类型可以协助您更早地发现错误,并增加测试和调试的时间

    静态类型可以协助您在代码投入消费之前发现难以发现的错误

    pipenv install mypy --dev 

    默许状况下,Mypy 将递归反省一切导入包的类型注释,当库不包含这些注释时,就会报错。我们需求将 mypy 配置为仅在我们的代码上运转,并疏忽没有类型注释的导入错误。我们假定我们的代码位于以下配置的 best_practices 包中。将此添加到 setup.cfg :

    [mypy] 

    files=best_practices,test 

    ignore_missing_imports=true 

    如今我们可以运转 mypy 了:

    pipenv run mypy 

    这是一个有用的 备忘单 [7] 。

    用 pytest 和 pytest-cov 停止测试

    运用 pytest [8] 编写测试十分容易,消弭编写测试的阻力意味着可以快速的编写更多的测试!

    pipenv install pytest pytest-cov --dev 

    这是 pytest 网站上的一个复杂示例:

    # content of test_sample.py 

    def inc(x): 

        return x + 1 

     

    def test_answer(): 

        assert inc(3) == 5 

    要执行它:

    $ pipenv run pytest 

    =========================== test session starts ============================ 

    (责任编辑:admin)