TeamCity和pyflakes
TeamCity是一款由JetBrains公司開發(fā)的持續(xù)集成和部署工具,它提供了豐富的功能來幫助團(tuán)隊(duì)協(xié)作進(jìn)行軟件開發(fā)。其中包括代碼檢查、自動(dòng)化構(gòu)建、測(cè)試運(yùn)行、版本控制等多個(gè)方面。
在我們團(tuán)隊(duì)中使用TeamCity進(jìn)行配合pyflakes代碼檢查,我們需要升級(jí)pyflakes到支持python3,同時(shí)保留python2的語法檢查功能。
在Teamcity中修改python腳本后,無需重啟teamcity即可生效。
pyflakes語法檢查同時(shí)支持python2/3
pyflakes
pyflakes · PyPI
查看版本:指令:pip list,pyflakes 2.3.1
teamcity代碼:https://svn-xxx/tools/teamcity/check_pyflakes.py
從官網(wǎng)查到最后一個(gè)同時(shí)支持python2和3的pyflakes版本:https://pypi.org/project/pyflakes/2.4.0/,實(shí)測(cè)下來它要分別為py2和py3安裝,而不是只安裝一個(gè)來同時(shí)適配2和3。
關(guān)于pyflakes的使用和配置:python代碼檢查工具(靜態(tài)代碼審查)
python3的pyflakes支持python2嗎?
結(jié)論:不支持
語法有差別,比如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"
^
再舉個(gè)例子
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'
^
再來個(gè)例子
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'
官方的建議
官方建議我們?yōu)閜ython2/3分別安裝pyflakes。
You can also invoke Pyflakes with python3 -m pyflakes . or python2 -m pyflakes . if you have it installed for both versions.
如何區(qū)分是python3還是python2?
按工程人工標(biāo)記,因?yàn)橥粋€(gè)工程中python2和3不能混用,所以在寫代碼的時(shí)候程序員就已經(jīng)知道當(dāng)前工程應(yīng)該用python2解釋器還是python3解釋器。
因?yàn)橐粋€(gè)py腳本是要放到python2還是python3的解釋器來執(zhí)行是由程序員來決定的。
一臺(tái)電腦同時(shí)安裝python2和3
我們?cè)诎惭bPython3(>=3.3)時(shí),Python的安裝包實(shí)際上在系統(tǒng)中安裝了一個(gè)啟動(dòng)器py.exe,默認(rèn)放置在文件夾C:\Windows\下面。這個(gè)啟動(dòng)器允許我們指定使用Python2還是Python3來運(yùn)行代碼(當(dāng)然前提是你已經(jīng)成功安裝了Python2和Python3)。
在安裝python3時(shí)不要勾選添加安裝目錄到環(huán)境變量中,下面這幾個(gè)都不要添加到環(huán)境變量的path中
-
C:\Python38
-
C:\Python38\Scripts
同時(shí)不要把這幾個(gè)目錄添加到環(huán)境變量的path中
-
C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\
-
C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\Scripts\
使用pip安裝庫
我們?cè)诎惭bpython3的時(shí)候沒有把py3添加到環(huán)境變量中,所以當(dāng)我們使用pip時(shí)默認(rèn)是指向python2。
如果你不放心,還可以這樣:py -2 -m pip install XXXX
為Python3安裝軟件:py -3 -m pip install XXXX
更多原理性的知識(shí),歡迎查閱我的KM文章:zhaoqingqing的網(wǎng)易km個(gè)人空間 (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
參數(shù)是啥意思
python 執(zhí)行保存log 1>>log.txt 2>&1_python 2>log.txt_做測(cè)試的喵醬的博客-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-470528.html
Python—后臺(tái)運(yùn)行(nohup 、&、 2>&1詳解) - 劉_love_田 - 博客園 (cnblogs.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-470528.html
到了這里,關(guān)于為teamcity的代碼語法檢查工具pyflakes增加支持python2和python3的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!