当前位置: 首页 >  在线学习 >  为teamcity的代码语法检查工具pyflakes增加支持python2和python3

为teamcity的代码语法检查工具pyflakes增加支持python2和python3

导读:TeamCity和pyflakes.TeamCity是一款由JetBrains公司开发的持续集成和部署工具,它提供了丰富的功能来帮助团队协作进行软件开发。其中包括代码检查、自动化构建、测试运行、版本控制等多个方面。.在我们团队中使用TeamCity进行配合pyflakes代码检查

TeamCity和pyflakes

TeamCity是一款由JetBrains公司开发的持续集成和部署工具,它提供了丰富的功能来帮助团队协作进行软件开发。其中包括代码检查、自动化构建、测试运行、版本控制等多个方面。

在我们团队中使用TeamCity进行配合pyflakes代码检查,我们需要升级pyflakes到支持python3,同时保留python2的语法检查功能。

在Teamcity中修改python脚本后,无需重启teamcity即可生效。

pyflakes语法检查同时支持python2/3

pyflakes

pyflakes · PyPI

查看版本:指令:pip list,pyflakes 2.3.1

teamcity代码:https://svn-xxx/tools/teamcity/check_pyflakes.py

从官网查到最后一个同时支持python2和3的pyflakes版本:https://pypi.org/project/pyflakes/2.4.0/,实测下来它要分别为py2和py3安装,而不是只安装一个来同时适配2和3。

关于pyflakes的使用和配置:python代码检查工具(静态代码审查)

python3的pyflakes支持python2吗?

结论:不支持

语法有差别,比如print

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast, is_py3:1 ,filePath:D:/debug/qing_debug.py
origin msg:  D:/xxx/qing_debug.py:54:9: invalid syntax
        print "[zhao]aaaaa"
              ^

再举个例子

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast, is_py3:1 ,filePath:D:/debug/qing_debug.py
origin msg:  D:/debug/qing_debug.py:32:7: invalid syntax
        exec 'print 111'
             ^

再来个例子

PS E:\Code\python_study\collection> py -3 -m pyflakes range_test.py
range_test.py:9:1: 'random' imported but unused
range_test.py:14:10: undefined name 'xrange'

官方的建议

官方建议我们为python2/3分别安装pyflakes。

You can also invoke Pyflakes with python3 -m pyflakes . or python2 -m pyflakes . if you have it installed for both versions.

如何区分是python3还是python2?

按工程人工标记,因为同一个工程中python2和3不能混用,所以在写代码的时候程序员就已经知道当前工程应该用python2解释器还是python3解释器。

因为一个py脚本是要放到python2还是python3的解释器来执行是由程序员来决定的。

一台电脑同时安装python2和3

我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面。这个启动器允许我们指定使用Python2还是Python3来运行代码(当然前提是你已经成功安装了Python2和Python3)。

在安装python3时不要勾选 添加安装目录到环境变量中,下面这几个都不要添加到环境变量的path中

  1. C:\Python38

  2. C:\Python38\Scripts

同时不要把这几个目录添加到环境变量的path中

  1. C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38

  2. C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\Scripts

使用pip安装库

我们在安装python3的时候没有把py3添加到环境变量中,所以当我们使用pip时默认是指向python2。

如果你不放心,还可以这样:py -2 -m pip install XXXX

为Python3安装软件:py -3 -m pip install XXXX

更多原理性的知识,欢迎查阅我的KM文章:zhaoqingqing的网易km个人空间 (netease.com)

为python3安装 pyflakes

py -3 -m pip install pyflakes

C:\Users\zhaoqingqing01>py -3 -m pip install pyflakes
Collecting pyflakes
  Downloading pyflakes-3.0.1-py2.py3-none-any.whl (62 kB)
     |████████████████████████████████| 62 kB 4.8 MB/s
Installing collected packages: pyflakes
  WARNING: The script pyflakes.exe is installed in 'C:\Python38\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pyflakes-3.0.1

pyflakes检查python语法

pyflakes console.py >logPyflakes.txt 2>&1

py -3 -m pyflakes console.py >logPyflakes.txt 2>&1

PS D:\work\tools\start_docker\scripts> pyflakes console.py
console.py:20:10: invalid syntax
        async def connect(self, command):
                ^
PS D:\work\tools\start_docker\scripts> py -3 -m pyflakes console.py
PS D:\work\tools\start_docker\scripts>

集成到teamcity

旧版只支持到python2

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast , is_py3:0 ,filePath:D:/xxx/console.py
origin msg D:/xxx/console.py:20:10: invalid syntax
        async def connect(self, command):
                ^

开启python3支持

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast , is_py3:1 ,filePath:D:/xxx/console.py
origin msg 

参数是啥意思

python 执行保存log 1>>log.txt 2>&1_python 2>log.txt_做测试的喵酱的博客-CSDN博客

Python—后台运行(nohup 、&、 2>&1详解) - 刘_love_田 - 博客园 (cnblogs.com)

内容
  • 计算机网络概念汇总
    计算机网络概念汇总
    2023-12-05
    1. 模型结构.五层模型 :.应用层、传输层、网络层、数据链路层、物理层。.应用层 :为应用程序提供交互服务。在互联网中
  • UE开发使用Rider时缓存干爆C盘的解决方案
    UE开发使用Rider时缓存干爆
    2023-12-03
    我们在使用Rider开发UE时,Ride会为每一个项目创建一个解决方案缓存,如果开几个新项目写测试demo,我们的C盘会
  • Unity3D 横板跳跃游戏半成品demo源代码
    Unity3D 横板跳跃游戏半成
    2023-12-08
    项目介绍:.基于B站的 Unity3D新手教程 进行学习制作,但视频中的做法有很多BUG,此demo是经过优化,几乎修复
  • 数据分析师如何用SQL解决业务问题?
    数据分析师如何用SQL解决业务问
    2023-12-03
    本文来自问答。.提问:数据分析人员需要掌握sql到什么程度?.请问做一名数据分析人员,在sql方面需要掌握到什么程度呢?
  • Unity 中的存档系统(本地存档)
    Unity 中的存档系统(本地存
    2023-12-09
    思想.在游戏过程中,玩家的背包、登录、人物系统都与数据息息相关,无论是一开始就设定好的默认数据,还是可以动态存取的数据,
  • unity 实现自定义class深度拷贝 deep copy 深度复制 引用类型复制
    unity 实现自定义class
    2023-12-09
    气死我了,搜半天没有,全让序列化再反序列化,又不方便又不美观。结果自己试着一写就通,两行完事。.首先先安装Newtons