TeamCity是一款由JetBrains公司開發的持續整合和部署工具,它提供了豐富的功能來幫助團隊共同作業進行軟體開發。其中包括程式碼檢查、自動化構建、測試執行、版本控制等多個方面。
在我們團隊中使用TeamCity進行配合pyflakes程式碼檢查,我們需要升級pyflakes到支援python3,同時保留python2的語法檢查功能。
在Teamcity中修改python指令碼後,無需重啟teamcity即可生效。
檢視版本:指令: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程式碼檢查工具(靜態程式碼審查)
結論:不支援
語法有差別,比如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.
按工程人工標記,因為同一個工程中python2和3不能混用,所以在寫程式碼的時候程式設計師就已經知道當前工程應該用python2直譯器還是python3直譯器。
因為一個py指令碼是要放到python2還是python3的直譯器來執行是由程式設計師來決定的。
我們在安裝Python3(>=3.3)時,Python的安裝包實際上在系統中安裝了一個啟動器py.exe,預設放置在資料夾C:\Windows\下面。這個啟動器允許我們指定使用Python2還是Python3來執行程式碼(當然前提是你已經成功安裝了Python2和Python3)。
在安裝python3時不要勾選新增安裝目錄到環境變數中,下面這幾個都不要新增到環境變數的path中
C:\Python38
C:\Python38\Scripts
同時不要把這幾個目錄新增到環境變數的path中
C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\
C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\Scripts\
我們在安裝python3的時候沒有把py3新增到環境變數中,所以當我們使用pip時預設是指向python2。
如果你不放心,還可以這樣:py -2 -m pip install XXXX
為Python3安裝軟體:py -3 -m pip install XXXX
更多原理性的知識,歡迎查閱我的KM文章:zhaoqingqing的網易km個人空間 (netease.com)
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 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>
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):
^
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)