首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自动化让你远离烦恼,几个小技巧轻松优化​Python开发环境

pyenv install --list 为了使上述过程更加具体,在此安装python3.7.5并且设置其为默认的全局解释器。...:Shawe82/tf2-utils.git 如果想要查看一个使用了文中推荐工具的实际项目,请前往我的Github仓库。...下面介绍mypy。 Mypy是一种静态python代码检查器,作用是在错误发生之前找到他们。使用poetry向项目中添加mypy并进行代码检查与添加black一样简单。...运行mypy也可能导致很多麻烦。当然,可以将其设置为只对你关心的错误发出警告。这可以通过在项目中添加mypy.ini文件实现。...笔者倾向于后者,因为precommit只在本地使用,而不在CI/CD服务器上。相反,black和mypy在CI/CD服务器上运行,因此,将它们添加到项目的dev依赖项是有意义的。

1.2K30

神级操作!优化​Python开发环境的几个技巧

但如果你的程序需要不同版本的Python,或依赖于同一第三方模块的不同版本,并需要在几个程序之间无缝切换时该怎么办? Pyenv可以解决上述问题。...下面介绍mypy! Mypy是一种静态python代码检查器,作用是在错误发生之前找到他们。使用poetry向项目中添加mypy并进行代码检查与添加black一样简单。...运行mypy也可能导致很多麻烦。当然,可以将其设置为只对你关心的错误发出警告。这可以通过在项目中添加mypy.ini文件实现。...我倾向于后者,因为precommit只在本地使用,而不在CI/CD服务器上。 相反,black和mypy在CI/CD服务器上运行,因此,将它们添加到项目的dev依赖项是有意义的。...- id: black language_version: python3.7- repo: https://github.com/pre-commit/mirrors-mypy rev

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    (代码风格统一、类型检测、测试覆盖率高、自动检测) 在本文中,我将介绍如何建立一个可以做到这些点的项目。您可以按照步骤操作,也可以直接跳到 使用 cookiecutter 生成项目 部分(老手)。...black 通过减少代码的差异性,使代码检查更快。...如下: 静态类型可以使程序更易于理解和维护 静态类型可以帮助您更早地发现错误,并减少测试和调试的时间 静态类型可以帮助您在代码投入生产之前发现难以发现的错误 pipenv install mypy --...pipenv run pytest --cov --cov-fail-under=100 --cov-fail-under=100 是设定项目的测试覆盖率如果小于 100% 那将认定为失败。...://github.com/psf/black [5] isort: https://github.com/timothycrosley/isort [6] Mypy: http://mypy-lang.org

    1.7K40

    使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!

    Mypy 是什么?(如果你很熟悉 Mypy,可跳过本节。)Mypy 是 Python 的一个静态类型检查工具。...如果你写过 Python 3,你可能会注意到 Python 支持类型注解,像这样:def greeting(name: str) -> str: return 'Hello ' + namePython...(装饰器的另一个问题是我前面提过的@functools.lru_cache :由于装饰器最终定义了一个全新的函数,所以如果你不正确地注解代码,就可能会出现严重而令人惊讶的错误。)...GitHub 上的问题当搜索如何解决某个类型问题时,我经常会找到 Mypy 的 GitHub Issues (比 Stack Overflow 还多)。...如前所述,Mypy 在每次运行后都会将类型检查结果缓存到磁盘——但是如果在新机器或新容器上运行 Mypy(就像在 CI 上一样),则不会有缓存的好处。

    94120

    力压 Java 与 C 的 Python 现状如何了?

    mypy mypy 是一个 Python 的静态类型检查工具,它已经出现有一段时间了。但是,这几年它发展得很好了,你甚至可以把它通过 git hooks 或其他 CI 流程来集成到产品的项目中。.../pynacl 因此这些库会阻碍你将 mypy 集成到你的 CI 系统中,除非你做出大量配置。...我不知道应该如何解决这个问题,但我想指出这个问题,因为别人没说过。 02 缺点 像许多与 Python 一样老的项目一样(Python 都和我一样老了),一些模块和思想也上了年纪。...在我犯过的所有编码错误中,90% 都是类型相关的错误(现在可以通过 mypy 捕获大部分),或是以为自己创建了新变量,实际上却错误地使用了同一个函数中定义过的变量。...现实是,任何大小的 notebook 转换成脚本都需要大量手工操作才能成功转换,有时还不如手动复制粘贴。我听说许多公司创建了 nbconvert 的 wrapper 使它更容易使用。

    75820

    【手把手教程】维护机器学习代码的正确姿势

    flake8 步骤 5:mypy Python 没有强制性的静态类型化,但还是建议将类型添加至函数参数并返回类型。例如: class MyModel(nn.Module): .......你要做的就是将以下文件添加到存储库中:https://github.com/ternaus/retinaface/blob/master/.github/workflows/ci.yml 执行以下代码来告诉...如果你对这些工具不熟悉,可能需要花 20 分钟添加它们并修复错误和警告。 记住这次的操作。在下个项目中,你可以在没写代码之前就在第一次提交中添加这些检查。...如果你需要写 100500 个词来描述怎样运行训练或者推理,那就说明你的项目存在问题了。你需要重构代码,使它对用户更加友好。 人们经常会问:如何提高写代码的能力?这便是一个锻炼你的机会。...如果要写机器学习方面的文章,我建议你包含以下内容: 研究问题是什么? 你是如何解决这个问题的?

    45610

    Kaggle竞赛经验总结:维护机器学习代码的正确姿势

    flake8 步骤 5: mypy Python 没有强制性的静态类型化,但还是建议将类型添加至函数参数并返回类型。例如: class MyModel(nn.Module): .......你要做的就是将以下文件添加到存储库中:https://github.com/ternaus/retinaface/blob/master/.github/workflows/ci.yml 执行以下代码来告诉...如果你对这些工具不熟悉,可能需要花 20 分钟添加它们并修复错误和警告。 记住这次的操作。在下个项目中,你可以在没写代码之前就在第一次提交中添加这些检查。...如果你需要写 100500 个词来描述怎样运行训练或者推理,那就说明你的项目存在问题了。你需要重构代码,使它对用户更加友好。 人们经常会问:如何提高写代码的能力?这便是一个锻炼你的机会。...如果要写机器学习方面的文章,我建议你包含以下内容: 研究问题是什么? 你是如何解决这个问题的?

    74140

    竞赛比完,代码、模型怎么处理?Kaggle大神:别删,这都是宝藏

    flake8 步骤 5:mypy Python 没有强制性的静态类型化,但还是建议将类型添加至函数参数并返回类型。例如: class MyModel(nn.Module): .......你要做的就是将以下文件添加到存储库中:https://github.com/ternaus/retinaface/blob/master/.github/workflows/ci.yml 执行以下代码来告诉...如果你对这些工具不熟悉,可能需要花 20 分钟添加它们并修复错误和警告。 记住这次的操作。在下个项目中,你可以在没写代码之前就在第一次提交中添加这些检查。...如果你需要写 100500 个词来描述怎样运行训练或者推理,那就说明你的项目存在问题了。你需要重构代码,使它对用户更加友好。 人们经常会问:如何提高写代码的能力?这便是一个锻炼你的机会。...如果要写机器学习方面的文章,我建议你包含以下内容: 研究问题是什么? 你是如何解决这个问题的?

    54450

    竞赛比完,代码、模型怎么处理?Kaggle大神:别删,这都是宝藏

    flake8 步骤 5:mypy Python 没有强制性的静态类型化,但还是建议将类型添加至函数参数并返回类型。例如: class MyModel(nn.Module): .......你要做的就是将以下文件添加到存储库中:https://github.com/ternaus/retinaface/blob/master/.github/workflows/ci.yml 执行以下代码来告诉...如果你对这些工具不熟悉,可能需要花 20 分钟添加它们并修复错误和警告。 记住这次的操作。在下个项目中,你可以在没写代码之前就在第一次提交中添加这些检查。...如果你需要写 100500 个词来描述怎样运行训练或者推理,那就说明你的项目存在问题了。你需要重构代码,使它对用户更加友好。 人们经常会问:如何提高写代码的能力?这便是一个锻炼你的机会。...如果要写机器学习方面的文章,我建议你包含以下内容: 研究问题是什么? 你是如何解决这个问题的?

    59220

    Python | 开发者必备的 6 个库

    还有一些,像 PBR 、CFFI 和 MyPy , 适用于差不多所有五花八门的 Python 应用,无论在什么地方运行。 如果你是一个 Python 开发者,所有这六个项目都值得你来熟悉一下。...Python 必备之 PyPy PyPy 主要用于何处? 如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...Python 必备之 PyInstaller PyInstaller 主要用于何处? 关于 Python 的最常见的问题之一是“如何从 Python 脚本中生成独立的可执行文件?”...Mypy(http://www.infoworld.com/cms/article/mypy-lang.blogspot.com) 在编译时向 Python 添加静态类型检查,使 Python 程序更加一致和可维护...那些对 Mypy 实现感兴趣的人可以通过 GitHub (https://github.com/python/mypy)检出源码。

    2.2K30

    用 Type Annotation 提升 Python 代码健壮性

    动态类型的语言,比如在写 Python 的时候,如果不用一些额外的手段,这种低级的错误,并不会在检查时爆出来,只会在运行时爆出来。如果线上还是出这个问题,就蛋疼了。...并且,如果我其中一小块功能进行了修改,我总不能每次都跑 IPython 吧?我也不能因为想检查一下类型这种小操作就写测试代码覆盖一下?...的官方文档 0x03 常见问题 如何忽略 mypy 警告 有的地方的代码不进行检查的话会方便很多。...https://github.com/zulip/zulip/ 当然,从这个项目里面不仅仅能学到 typing annotation, 还能学到大项目下,牛 X 的公司的做法 如何组织和划分模块 如何帮助开发者快速启用开发环境...如何做测试,如何做 CI 如何优化自己的 Workflow 有机会的话,我会挑其中的一小部分讲解一下。

    1.6K20

    Python 开发者的 6 个必备库

    还有一些,像 PBR 、CFFI 和 MyPy , 适用于差不多所有五花八门的 Python 应用,无论在什么地方运行。 如果你是一个 Python 开发者,所有这六个项目都值得你来熟悉一下。...Python 必备之 PyPy PyPy 主要用于何处? 如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...Python 必备之 PyInstaller PyInstaller 主要用于何处? 关于 Python 的最常见的问题之一是“如何从 Python 脚本中生成独立的可执行文件?”...Mypy(http://www.infoworld.com/cms/article/mypy-lang.blogspot.com) 在编译时向 Python 添加静态类型检查,使 Python 程序更加一致和可维护...那些对 Mypy 实现感兴趣的人可以通过 GitHub (https://github.com/python/mypy)检出源码。 ----

    2.1K70

    流畅的 Python 第二版(GPT 重译)(四)

    如果第一个参数是可变的,这些会在原地更改第一个参数;如果不是,该函数的工作方式类似于没有i前缀的函数:它只是返回操作的结果。...使 Mypy 更严格 命令行选项 --disallow-untyped-defs 会使 Mypy 标记任何没有为所有参数和返回值添加类型提示的函数定义。...将静态类型检查器视为现代 CI 流水线中的工具之一,与测试运行器、代码检查器等一起。CI 流水线的目的是减少软件故障,自动化测试可以捕获许多超出类型提示范围的错误。...没有一个实际读取类型提示的工具,很难看出渐进式类型是如何工作的,因此我们开发了一个由 Mypy 错误报告引导的带注解函数。...Protocol实现了静态鸭子类型:Python 鸭子类型核心与名义类型之间的重要桥梁,使静态类型检查器能够捕捉错误。

    39910

    Python | 开发者必备的 6 个库

    还有一些,像 PBR 、CFFI 和 MyPy , 适用于差不多所有五花八门的 Python 应用,无论在什么地方运行。 如果你是一个 Python 开发者,所有这六个项目都值得你来熟悉一下。...Python 必备之 PyPy PyPy 主要用于何处? 如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...Python 必备之 PyInstaller PyInstaller 主要用于何处? 关于 Python 的最常见的问题之一是“如何从 Python 脚本中生成独立的可执行文件?”...Mypy(http://www.infoworld.com/cms/article/mypy-lang.blogspot.com) 在编译时向 Python 添加静态类型检查,使 Python 程序更加一致和可维护...那些对 Mypy 实现感兴趣的人可以通过 GitHub (https://github.com/python/mypy)检出源码。

    1.7K30

    【Python】动态与静态的较量:深入探讨Python的动态类型机制与类型提示的应用

    本文深入解析Python的动态类型机制,探讨类型提示(type hints)如何改善代码的可读性与可维护性,并详细介绍静态类型检查工具——mypy。...在大量示例代码中,我们将展示如何通过类型提示减少错误,提升开发效率,确保项目在开发过程中的安全性与稳定性。...同时,本文将通过代码片段与中文注释,帮助读者理解如何在Python项目中使用mypy实现动态与静态类型的平衡。...这种结合不仅能够减少运行时错误,还能提升团队协作和代码可读性,使Python在大型项目中更具优势。让我们一同探索如何在Python的动态类型世界中,以更“静态”的方式实现灵活与安全的结合。...在项目扩展或重构时,mypy可以帮助检测类型的不一致性,防止错误传播。

    9110

    流畅的 Python 第二版(GPT 重译)(八)

    示例 15-6 构建了一个有效的 BookDict,并尝试对其进行一些操作。这展示了 TypedDict 如何使 Mypy 能够捕获错误,如 示例 15-7 中所示。...示例 15-22 展示了如何使通用的RandomPicker在pick的返回类型上具有协变性。 示例 15-22。...然而,如果我们交换操作数(示例 16-6),混合类型的加法会失败。 示例 16-6. Vector....__radd__方法,如果左操作数不实现__add__,或者实现了但返回NotImplemented以表示不知道如何处理右操作数,则 Python 将调用它作为后备。...如果反向方法调用返回NotImplemented,那么 Python 将引发TypeError,并显示标准错误消息,如“不支持的操作数类型:Vector和str”。

    24210

    Python 开发者的 6 个必备库

    还有一些,像 PBR 、CFFI 和 MyPy , 适用于差不多所有五花八门的 Python 应用,无论在什么地方运行。 如果你是一个 Python 开发者,所有这六个项目都值得你来熟悉一下。...Python 必备之 PyPy PyPy 主要用于何处? 如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...Python 必备之 PyInstaller PyInstaller 主要用于何处? 关于 Python 的最常见的问题之一是“如何从 Python 脚本中生成独立的可执行文件?”...Mypy(http://www.infoworld.com/cms/article/mypy-lang.blogspot.com) 在编译时向 Python 添加静态类型检查,使 Python 程序更加一致和可维护...那些对 Mypy 实现感兴趣的人可以通过 GitHub (https://github.com/python/mypy)检出源码。

    1.1K70

    政策驱动的持续集成?

    关于这项政策,有两点需要注意: default allow = false表示我的package.json依赖关系假定有错误,必须在到达下一个CI阶段(安装阶段)之前通过检查。...violations[pkg]块创建一个黑名单违例包列表,当发生违例时,该列表会返回到评估输出中,从而使开发者更容易知道为什么评估失败。...只有在没有违例(count(violations) == 0)时,评估才会成功(即脚本返回0的退出码);否则,它就会失败。 这就涵盖了依赖关系政策。...你可以在这里看到CI失败的结果。让我们解决这个问题! https://github.com/lucperkins/opa-ci-example/runs/142848310 这个拉取请求完成了任务。...从evaluate操作的结果可以看出,opa eval…命令返回未定义的值,而不是列出违规的表。因为evaluate操作已经通过,所以install操作已经成功调用。

    89120

    将 Docker 镜像安全扫描,添加到 CICD 管道

    最后一种方法很酷,因为它使我们能够自动化流程并不断分析所生成的图像,从而符合DevOps的理念。 这是一个简单的例子: 因此,今天我将向您展示如何设置集成到CI/CD管道中的镜像安全扫描。...好的,现在我们已经将镜像扫描集成到CI / CD管道中,现在的问题是如何处理这些信息? 当前,安全扫描作业永远不会失败,因为trivy命令默认情况下返回0。...如果镜像“不安全”,则使工作失败,否则,则可以使工作成功,从而改善这种情况。 问题是,什么时候失败?显然,我们不能简单地说“每当发现一个漏洞时就会失败”,因为我们的映像很可能至少会存在一些漏洞。...我们还可以借助“退出代码”选项来处理退出代码,告诉trivy如果发现一个漏洞,则返回1,否则返回0。...结论 因此,我们已经看到了如何将安全扫描作业集成到GitlabCI管道中,这非常简单(至少使用Trivy)。当然,在我的示例中,我在单个master分支中完成了所有操作。

    2.5K20
    领券