Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Google出品的Python代码静态类型分析器:Pytype

Google出品的Python代码静态类型分析器:Pytype

作者头像
代码医生工作室
发布于 2019-06-21 09:53:38
发布于 2019-06-21 09:53:38
1.4K0
举报
文章被收录于专栏:相约机器人相约机器人

Pytype检查并推断Python代码的类型——不需要类型注解。Pytype可以:

  • 使用lint检查纯Python代码,标记常见错误,如属性名拼写错误、不正确的函数调用,等等更多,它甚至可以跨文件。
  • 强化用户提供的类型注解。虽然注解对于pytype是可选的,但是当注解存在时,它会检查并应用们。
  • 在独立文件(“pyi文件”)中生成类型注解,可以使用自身提供的merge-pyi工具将其合并回Python源代码中。

Pytype是一个静态分析器,这意味着它不执行它所检查的代码。

谷歌的数千个项目都依赖pytype来保持其Python代码类型良好和无错误。

更多信息,请查看用户指南或FAQ。

快速入门

要快速开始对一个文件或目录进行类型检查,你只需运行以下命令,用你的输入替换file_or_directory :

要在整个包上设置pytype,请将以下内容添加到包上级目录中的setup.cfg文件中,用包名替换package_name:

现在,你可以运行无参数命令pytype来对包进行类型检查。将pytype添加到你的自动化测试中也很容易;参见在Travis上运行pytype的GitHub项目的示例。

最后,pytype会生成含有推断出的类型信息的文件,默认情况下位于.pytype/pyi中。你可以使用此信息对相应的源文件进行类型注解,用文件的导入路径替换module.py:

需求

你需要一个Python 2.7或3.5+解释器来运行pytype,还需要在$PATH中设置一个与所分析代码的Python版本相同的Python解释器。

平台支持:

  • Pytype目前是在Linux上开发和测试的,Linux是主要支持的平台。
  • 在MacOSX上安装需要OSX 10.7或更高版本,以及Xcode v8或更高版本。
  • 目前不支持windows

安装

Pytype可以通过pip来安装。注意,安装过程需要使用wheel和setuptools。(如果你在virtualenv中工作,这两个包应该已经存在。)

或者从GitHub上的源码进行安装 :

代替使用--recurse-submodules参数进行安装, 你也可以在pytype目录中使用以下命令来安装:

用法

常见选项:

  • -V,--Python-Version:目标代码的Python版本(major.minor)。默认为3.6。
  • -o,--output:所有pytype输出的保存目录,包括生成的.pyi文件。默认为.pytype。
  • -d,--disable。以逗号分隔的要忽略的错误名称列表。pytype错误名称的详细说明在此文档中。默认为空。

要获得选项的完整列表,请运行pytype --help。

除了上面所述,你还可以通过设置$TYPESHED_HOME来直接运行pytype命令使用定制的typeshed安装替代它自己的绑定副本。

配置文件

为了方便起见,你可以将你的pytype配置保存在一个文件中。配置文件是一个带有[pytype]部分的INI-样式的文件;如果没有提供显式配置文件,pytype会从当前目录向上遍历查找第一个setup.cfg文件中的[pytype]部分。

我们从生成一个配置文件示例开始:

现在我们根据本地设置来自定义文件,只保留需要的部分。目录可能是配置文件的相对路径,如果你想将配置文件作为项目的一部分进行检查,这是非常有用的。

例如,假设你有以下目录结构,并且想要分析包 ~/repo1/foo,它依赖于包 ~/repo2/bar:

下面是设置好的配置文件,它将指示pytype将~/repo1/foo作为Python 3.6代码进行类型检查,在~/repo1和~/repo2中查找包,并忽略属性错误。注意,到包的路径不包括包本身。

我们可能会发现需要通过运行pytype的损坏依赖项检查器来将~/repo2添加到pythonpath中:

子工具

除了pytype本身外,Pytype还附带了三个脚本:

  • merge-pyi, 用于将.pyi文件中的类型信息合并到Python文件中.
  • pytd, 一个 .pyi 文件解析器.
  • pytype-single, pytype开发人员的调试工具,用来对单个Python文件进行分析,并假定已经为该Python文件的所有依赖项生成了.pyi文件。

产品路线图

•支持Windows系统

许可证

Apache 2.0

免责声明

本项目不是一个正式的Google产品。

英文原文:https://github.com/google/pytype

译者:一瞬

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
介绍几款 Python 类型检查工具
微软在 Github 上开源了一个 Python 静态类型检查工具:pyright ,引起了社区内的多方关注。
一墨编程学习
2019/05/15
7980
介绍几款 Python 类型检查工具
近日,微软在 Github 上开源了一个 Python 静态类型检查工具:pyright ,引起了社区内的多方关注。
Python猫
2019/04/09
1.2K0
介绍几款 Python 类型检查工具
介绍几款 Python 类型检查工具
近日,微软在 Github 上开源了一个 Python 静态类型检查工具:pyright ,引起了社区内的多方关注。
Python猫
2019/03/27
9400
介绍几款 Python 类型检查工具
干货 | 推荐一整套 Python 开发工具
原文:https://sourcery.ai/blog/python-best-practices/
Python数据科学
2019/09/08
1.4K0
资源 | Github项目推荐 | 微软开源Python静态类型检查器Pyright
创建Pyright是为了填补像 mypy 这样的现有Python类型检查器的漏洞。
abs_zero
2019/05/05
9510
如何建立一个完美的 Python 项目
当开始一个新的 Python 项目时,大家很容易一头扎进去就开始编码。其实花一点时间选择优秀的库,将为以后的开发节省大量时间,并带来更快乐的编码体验。
HelloGitHub
2021/05/14
1.8K0
如何建立一个完美的 Python 项目
如何创建私有Python包存储库
Python包的基本脚手架是一个包含与用户交互的代码的__init__.py文件。
良莉
2018/09/03
4.9K0
如何创建私有Python包存储库
Python静态代码检查工具Flake8
Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强。Flake8是对下面三个工具的封装:
全栈程序员站长
2022/09/30
1.6K0
python项目打包部署
作者:张博 链接:https://www.zhihu.com/question/38081354/answer/81829426 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
bear_fish
2018/09/19
14K0
Maven简单总结
Maven 是一个项目构建工具,现代软件开发都是一个个工程项目,软件项目的同步与管理的高昂成本催生出 Maven 这样的构建工具
TagBug
2023/03/16
4800
Maven简单总结
通过demo学习OpenStack开发
OpenStack是目前我所知的最大最复杂的基于Python项目。整个OpenStack项目包含了数十个主要的子项目,每个子项目所用到的库也不尽相同。因此,对于Python初学者和未接触过OpenStack项目的人来说,入门的难度相当大。
py3study
2020/01/06
1.4K0
用正确的姿势开源Python项目
一般我们都会选择在项目的顶层包含较基础的文件,比如setup.py,requirements,README等文件。 一般情况下,一个预发布的Python项目中应该包含以下几类文件:
Jintao Zhang
2018/08/27
9450
mypy 这个工具,让Python的类型提示变得非常实用
在此之前,我认为 Python 的类型提示就是一个花瓶,看起来好看,但并没有实质的作用,因为即使类型写错了,或者传错了,程序仍然可以运行,直到我发现了 mypy 这个工具。今天就来聊一聊 mypy。
somenzz
2021/12/02
1.6K0
mypy 这个工具,让Python的类型提示变得非常实用
四个 Python 项目管理的构建工具
Python 历时这么久以来至今还未有一个事实上标准的项目管理及构建工具,以至于造成 Python 项目的结构与构建方式五花八门。这或许是体现了 Python 的自由意志。
陈晨135
2022/01/05
1.9K0
四个 Python 项目管理的构建工具
自从用了这款项目构建神器后,领导开始对我刮目相看~
今天来给大家介绍一款项目构建神器——Maven,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的、流行的构建工具,从此以后,再也不用担心项目搞崩了。
沉默王二
2021/12/23
9660
自从用了这款项目构建神器后,领导开始对我刮目相看~
Maven框架 settings详解
用来设置Maven参数的配置文件,在Maven中提供了一个settings.xml文件来定义Maven的全局配置信息。我们通过这个文件来定义本地仓库、远程仓库和联网使用的代理信息等配置。
郭顺发
2023/07/17
6830
Python打包系统简单入门
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/82940813
乐百川
2019/07/02
1.1K0
Python打包系统简单入门
掌握pip的基本命令和高级用法:轻松管理Python包
pip是Python的包管理工具,用于安装、升级和卸载Python包。它是Python Package Index(PyPI)的默认包管理工具,PyPI是一个存储了大量Python包的仓库。pip的作用是简化Python包的安装和管理过程,使开发者能够更方便地获取和使用第三方库。它不仅提供了基本的安装和卸载功能,还支持包的版本管理、依赖解决、虚拟环境创建等高级功能,使得Python开发变得更加高效和灵活。
Lion 莱恩呀
2025/01/06
7060
掌握pip的基本命令和高级用法:轻松管理Python包
PyScaffold:Python项目脚手架,强大的Python项目生成器
PyScaffold是一个强大的Python项目生成器,它能帮你快速搭建高质量的Python项目框架,极大提高开发效率并保证代码规范性。本文将深入探讨PyScaffold的功能、使用方法以及诸多优势,带你体验现代Python项目开发的便捷与高效。
luckpunk
2025/01/21
7960
PyScaffold:Python项目脚手架,强大的Python项目生成器
Linux 下使用 SVN 服务
svn服务配置文件:/data/svn/myproject/conf/svnserve.conf
acc8226
2022/05/17
9.1K0
相关推荐
介绍几款 Python 类型检查工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档