pythonflake
1. 什麼是python的搭建環境
搭建環境,就是需要編程用的語言和用什麼進行編程,用什麼進行調試的這幾個條件的總和。
搭建框架,一般不是搭建,都是盡量選擇現有的,自己設計構造框架,在編程中總會遇見很多類似的問題和需求,為了避免重復世滑段編寫,於是就有人設計了框架讓虛,用來簡化重復需求的編寫。
2. python第三方庫為什麼
Python第三方庫幾乎都可以在github或者 pypi上找到源碼。源碼包格式大概有zip 、 tar.zip、 tar.bz2。解壓這些包,進入解壓好的文件夾,通常會有一個setup.py的文件。打開命令行,進入該文件夾。運行以下命令,就能把這個第三庫安裝到系統里:
Python
python setup.py install
1
python setup.py install
或者藉助pip,則不需要解壓:pip install package.zip
3. 如何用python畫一個Koch snowflake
可以這樣做:
生成轉角序列,然後轉換為像素坐標。最後用python的PIL模塊族液畫圖,保存為"koch.bmp"此穗簡並顯示圖形森褲。概念性代碼:
#!/usr/bin/env python
#coding:utf-8
from PIL import Image, ImageDraw
from math import sin, cos, pi
def genRaList(raListIn, n):
raListOut = raListIn
for i in range(n):
raListOut = []
for ra in raListIn:
raListOut.extend([ra, -60, 120, -60])
raListIn = raListOut
return raListOut
def raToPoints(xy, l, raList, n):
degreeToRadian = pi/180
angleDegree = 0
r = l*(3**(-n))
x,y = xy
pt = [(x,y)]
for ra in raList:
angleDegree += ra
angleRadian = angleDegree*degreeToRadian
x += r*cos(angleRadian)
y += -r*sin(angleRadian)
pt.append((x,y))
return pt
def drawKoch(xy, l, size, raList0, n):
raList = genRaList(raList0, n)
points = raToPoints(xy, l, raList, n)
im = Image.new('1', size, 'white')
draw = ImageDraw.Draw(im)
draw.polygon(points, fill=None, outline='black')
im.save('koch.bmp')
im.show()
if __name__ == '__main__':
raList0 = [240, 120, 120]
drawKoch((207, 34), 300, (415, 415), raList0, 5)
4. 使用vim搭建python開發環境-
最近開始經常需要用vim寫代碼,這里記錄一下自己利用vim搭建基本的python開發環境所使用的插件和一些基本配置
在 ~/.vimrc 文件中,添加如下的信息,完成vim的一些基本配置。
從 GitHub clone Vundle.vim 文件到 ~/.vim/bundle 文件夾下,完成Vundle的安裝。
然後修改 ~/.vimrc 文件,添加如下的信息
若使用 Vundle 安裝 nerdcommenter 插件,需要中 Vim 的配置文件中添加
然後在 Vim 的命令行模式下執行 :BundleInstall 命令完成插件的安裝
nerdcommenter的主要使用方式:
然後在 Vim 的命令行模式下執行 :BundleInstall 命令完成插件的安裝
通過vundle安裝好NERDTree插件後,在vim命令行模式輸入命令:NERDTree就可以看到NERDTree的顯示界面。
使用組合按鍵 Ctrl + w,可將游標自動在左右側窗口進行切換。
如果想要每次啟動vim的時候都默認開啟NERDTree。可以在vimrc文件中添加:
jedi-vim插件依賴python開源庫 「jedi」 ,可以使用pip安裝:
Vim 普通模式下按 F7 便可以直接啟動 flake8 對當前文件進行語法和格式檢查。
以上是我自己用的vim工具配置,如果大家有其他的好用的插件或者配置插件,歡迎一起交流分享呀
5. 怎麼解決VSCode的python插件問題
想用VSCode進行Python調試,安裝了python插件後,參考Python and VS Code進行設置:
(個人判斷應該是unitTest的設置出了問題)
{
// Python specific
"python.pythonPath": "D:\\Program Files\\Python36\\python",
"python.autoComplete.extraPaths": [
"D:\\Program Files\\Python36\\Lib\\site-packages",
"D:\\Program Files\\Python36\\Lib"
],
"python.devOptions": [
"DEBUG"
],
"python.linting.pylintEnabled": false,
"python.linting.flake8Enabled": true,
"python.formatting.provider": "autopep8",
"python.unitTest.unittestEnabled": true,
"python.unitTest.pyTestEnabled": true,
"python.unitTest.nosetestsEnabled": false,
// Extension and editor preferences
"files.insertFinalNewline": true,
"editor.fontFamily": "Fira Mono",
"editor.fontSize": 14,
"editor.rulers": [79],
"editor.roundedSelection": false,
"explorer.openEditors.visible": 0,
"trailing-spaces.trimOnSave": true,
"files.exclude": {
"**/.git": true,
"**/.DS_Store": true,
".vscode": true,
"**/__pycache__": true,
"**/**/*.pyc": true
}
}
但是每次打開py文件的時候,VS Code都提示「No tests discovered, please check the configuration settings for the tests.」
請問怎麼解決這個問題?
謝謝
"python.unitTest.unittestEnabled": true,
"python.unitTest.pyTestEnabled": true,
把這兩行改為false
6. 如何配置vscode的python編譯環境
為VSCode安裝擴展
用VSCode編程是需要依賴擴展的。寫Python需要安裝python的擴展,寫C++需要安裝C++的擴展。剛打開編輯器的時候,它一般會推薦一些擴展,你如果什麼都不知道,可以先安裝官方推薦的這些擴展:
修改VSCode的一些選項的默認值
VSCode有很多選項可以被修改,其各個選項都有默認值,這些默認值存儲在"\settings.json"中(不過我沒找到這個文件),用戶如果想修改某些選項的值(比如:修改字體的大小),VSCode會自動幫我們生成一個「settings.json」文件,然後我們直接在這個文件中配置自己想要的值即可。
VSCode還沒有創建"settings.json"文件:
VSCode幫我們創建了"settings.json"文件:
我們修改字型大小,讓字體大一些。修改完後,保存一下,自定義的值就會覆蓋默認值,修改就生效了。
用VSCode編寫和調試python程序
下面就開始用VSCode編程了。因為python的配置超簡單,我們以python為例來說明一下。
https //segmentfault com/q/1010000005897116
VSCode是以文件夾作為項目單位的。所以,我們如果要新建一個python項目的話,需要新建一個文件夾,然後在這個文件夾裡面放置.py文件。然後讓VSCode"打開文件夾",這樣VSCode就能識別這個項目了。(當然可以用VSCode直接創建文件夾和文件。)
先創建test_python文件夾,裡面創建一個test.py文件。
然後用VSCode載入它:
載入後的樣子。可以看到,因為安裝了python擴展,已經有高亮等效果了。
下面開始調試。
很顯然要選擇python選項:
然後VSCode為我們自動生成了"launch.json"文件,此文件有很多配置項,有的選項是默認從"settings.json"中取值的(比如"config.python.pythonPath")。如果"settings.json"中沒有配置它們的話,調試時可能會無法啟動。
同時,項目文件夾下面還自動生成了".vscode"文件夾。文件"launch.json"就在這個文件夾中。此時VSCode才算是真正意義上接手了這個項目文件夾。
網上的教程里,直接先在"settings.json"中把"python.pythonPath"先配置了一下,我當時不是太理解。現在看來,我們也需要配置一下了。
配置完之後,就可以正常調試程序了。
用VSCode調試帶參的Python程序
修改test.py裡面的代碼,讓它能列印參數(修改後的代碼見下面的圖片)。
修改launch.json,找到"configurations"中"name"為"Python"的那個配置塊,給它添加"args"項,如下圖所示:
添加前的配置塊:
添加後的配置塊:
文件launch.json修改完畢後,按F5調試程序,可以看到控制台輸出的結果:
在按F5調試時,VSCode每次都會在程序入口處暫停住,這是配置項"stopOnEntry"在起作用,將其改成false後就不會出現這種情況了。
用VSCode自動格式化代碼
VSCode「自動格式化代碼」的快捷鍵是「Alt+Shift+F」。要格式化Python代碼,需要安裝Python包yapf(或autopep8、等)。
在命令行下執行:
[plain] view plain
python -m pip install yapf
然後配置"settings.json",啟用yapf:
用VSCode對python代碼進行語言分析
VSCode使用python的語言分析(寫python代碼的時候,編輯器會提示哪裡出錯,哪裡的代碼格式不規范),可以安裝flake8(或pylint、等):
在命令行下執行:
[plain] view plain
python -m pip install flake8
然後配置"settings.json",啟用flake8:
更換文件圖標主題(使VSCode左側的資源管理器根據文件類型顯示圖標):
可以選擇已經存在的文件圖標主題:"文件"->"首選項"->"文件圖標主題"->"Seti(Visual Studio Code)"。
你也可以安裝「vscode-icons」插件,安裝的方式:
在「擴展(Ctrl+Shift+X)」中,搜索「vscode-icons」,然後安裝並重新載入它,然後VSCode會讓你執行一些操作,以激活"vscode-icons"插件。操作為:
"文件"->"首選項"->"文件圖標主題"->"VSCode Icons"。對應到英文的話,應該是"File" -> "Preferences" -> "File Icon Theme"->"VSCode Icons"。
Guides(縮進線插件,讓代碼看起來更清晰):
在「擴展(Ctrl+Shift+X)」中,搜索「Guides」,然後安裝並重新載入它即可。
7. 如何落實 Python 代碼風格
編碼規范選擇
Python 作為靈活的腳本語言,在格式方面並不存在太多的限制(相對編譯語言)。這樣會導致一個比較蛋疼的問題:在項目開發過程中,由於個人的習慣和編碼風格,導致程序缺少一個統一的標准,每個人的代碼表現形式也不同。因此,在實際項目由於新人加入、老人退出過程中會產生比較高的模塊維護成本。因此,在實際的項目開發中,選擇一個編碼標准也是比較重要的。
面對編碼風格選擇,比較常見的包括 PEP-8 和 Google Python Style Guide。在最後,我選擇了 PEP-8作為項目中的實際應用標准,要求程序需要在滿足編碼要求規范的前提下進行編碼。
除了對代碼編碼更個的要求以外,我們還對 import 等具體的細節進行了標准化。
盡量規范注釋
在降低模塊維護成本過程中,另外一個比較好的方式是盡量提供良好的代碼注釋。盡管這個算是一個和語言無關的老生常談的問題,我只是想在這里提一下另外一個 PEP:PEP-0257,這里介紹了一種約定的 docstring 編寫方法,對於編輯器而言,可以通過插件快速實現注釋。
不過我考慮到對個人習慣的影響較大,這個 PEP 實際項目開發中並未作為實際開發規范,只是鼓勵大家在項目中進行執行。
從規范到執行
從代碼開發最初的規范約定是一回事,當回到開發過程中,開發者難免會因為個人的習慣或者疏忽等各種原因導致程序開發過程中程序編碼風格不統一問題。因此在實際開發過程中,我們又需要通過工具保證程序在實際過程中能夠幫助規范化或者檢查格式錯誤。
藉助社區的力量,我們最終選擇了工具 flake8、yapf和isort。其中,flake8用於檢查我們的代碼是否正確的執行了標准;yapf工具用於快速進行PEP-8標准化,減少了人工修改的成本;isort工具則是執行我們之前提到的 import 標准化工作。
yapf是 Google 員工開發的一個 Python 格式化工具,它支持 PEP8 與 Google 編碼標准,一些具體的使用方式可以查看項目的主頁。在實際的項目落地過程中,你應該會遇到的一個問題是關於flake8與yapf標准不一致導致一個通過另一個無法正常通過的問題。這一個方面,我們選擇的方式是統一妥協成flake8的標准。對於yapf不支持的部分,我們建議活用# yapf: disable標記。
還有另一個問題是關於一些 flake8本身的標准(或者說 PEP-8 標准)問題,比如flake8常見問題:E501程序代碼長度超過 79 個字元問題,我們實際編碼過程中對這一標准做了適當妥協,允許最大單行字元串長度為 200。但是我們仍然建議縮小至 79 個字元內表示完。
從執行到檢查
在最後一關,是我們的上線前檢查。我們設置了代碼質量檢查關卡和系統集成測試。
在代碼質量檢查過程中,我們會對程序的實際代碼質量進行評估。我們對代碼質量進行打分,對於分值較低的代碼不允許提交進入 master分支。代碼質量的檢查,我們同樣的採用了flake8工具作為統一標准。最後個人的代碼質量,通過 Webhook 也會直接反饋在具體的項目管理工具中。
8. 我為什麼說 Python 是大數據全棧式開發語言 怎樣成為數據分析師
就像只要會JavaScript就可以寫出完整的Web應用,只要會Python,就可以實現一個完整的大數據處理平台。
雲基礎設施
這年頭,不支持雲平台,不支持海量數據,不支持動態伸縮,根本不敢說自己是做大數據的,頂多也就敢跟人說是做商業智能(BI)。
雲平台分為私有雲和公有雲。私有雲平台如日中天的 OpenStack
,就是Python寫的。曾經的追趕者CloudStack,在剛推出時大肆強調自己是Java寫的,比Python有優勢。結果,搬石砸腳,2015年
初,CloudStack的發起人Citrix宣布加入OpenStack基金會,CloudStack眼看著就要壽終正寢。
如果嫌麻煩不想自己搭建私有雲,用公有雲,不論是AWS,GCE,Azure,還是阿里雲,青雲,在都提供了Python SDK,其中GCE只提供Python和JavaScript的SDK,而青雲只提供Python SDK。可見各家雲平台對Python的重視。
提到基礎設施搭建,不得不提Hadoop,在今天,Hadoop因為其MapRece數據處理速度不夠快,已經不再作為大數據處理的首選,但
是HDFS和Yarn——Hadoop的兩個組件——倒是越來越受歡迎。Hadoop的開發語言是Java,沒有官方提供Python支持,不過有很多第
三方庫封裝了Hadoop的API介面(pydoop,hadoopy等等)。
Hadoop MapRece的襲蘆替代者,是號稱快上100倍的 Spark ,其開發語言是Scala,但是提供了Scala,Java,Python的開發介面,想要討好那麼多用Python開發的數據科學家,不支持Python,真是說不過去。HDFS的替代品,比如GlusterFS, Ceph 等,都是直接提供Python支持。Yarn的替代者, Mesos 是C++實現,除C++外,提供了Java和Python的支持包。
DevOps
DevOps有個中文名字,叫做 開發自運維 。互聯網時代,只有能夠快速試驗新想法,並在第一時間,安全、可靠的交付業務價值,才能保持競爭力。DevOps推崇的自動化構建/測試/部署,以及系統度量等技術實踐,是互聯網時代必不可少的。
自動化構建是因應用而易的,如果是Python應用,因為有setuptools, pip, virtualenv, tox,
flake8等工具的存在,自動化構建非常簡單。而且,因為幾乎所有Linux系統都內置Python解釋器,所以用Python做自動化,不需要系統預
安裝什麼軟體。
自動化測試方面,基於Python的 Robot Framework 企業級應用最喜歡的自動化測試框架,而且和語言無關。Cucumber也有很多支持者,Python對應的Lettuce可以做到完全一樣的事情。 Locust 在自動化性能測試方面也開始受到越來越多的關注。
自動化配置管理工具,老牌的如Chef和Puppet,是Ruby開發,目前仍保持著強勁的勢頭拍肢帶。不過,新生代 Ansible 和 SaltStack ——均為Python開發——因為較前兩者設計更為輕量化,受到越來越多開發這的歡迎,已經開始給前輩們製造了不少的壓力。
在系統監控與度量方面,傳統的Nagios逐漸沒落,新貴如 Sensu 大受好評,雲服務形式的New Relic已經成為創業公司的標配,這些都不是直接通過Python實現的,不過Python要接入這些工具,並不困難。
除了上述這些工具,基於Python,提供完整DevOps功能的PaaS平台,如 Cloudify 和 Deis ,雖未成氣候,但已經得到大量關注。
網路爬蟲
大數據的數據從哪裡來?除了部分企業有能力自己產生大量的數據,大部分時候,是需要靠爬蟲來抓取互聯網數據來做分析。
網路爬蟲是Python的傳統強勢領域,最流行的爬蟲框架Scrapy,HTTP工具包urlib2,HTML解析工具beautifulsoup,XML解析器lxml,等等,都是能夠獨當一面的類庫。
不過,網路爬蟲並飢碧不僅僅是打開網頁,解析HTML這么簡單。高效的爬蟲要能夠支持大量靈活的並發操作,常常要能夠同時幾千甚至上萬個網頁同時抓取,傳統的
線程池方式資源浪費比較大,線程數上千之後系統資源基本上就全浪費在線程調度上了。Python由於能夠很好的支持協程( Coroutine )操作,基於此發展起來很多並發庫,如Gevent,Eventlet,還有Celery之類的分布式任務框架。被認為是比AMQP更高效的ZeroMQ也是最早就提供了Python版本。有了對高並發的支持,網路爬蟲才真正可以達到大數據規模。
抓取下來的數據,需要做分詞處理,Python在這方面也不遜色,著名的自然語言處理程序包NLTK,還有專門做中文分詞的Jieba,都是做分詞的利器。
數據處理
萬事俱備,只欠東風。這東風,就是數據處理演算法。從統計理論,到數據挖掘,機器學習,再到最近幾年提出來的深度學習理論,數據科學正處於百花齊放的時代。數據科學家們都用什麼編程?
如果是在理論研究領域,R語言也許是最受數據科學家歡迎的,但是R語言的問題也很明顯,因為是統計學家們創建了R語言,所以其語法略顯怪異。而且
R語言要想實現大規模分布式系統,還需要很長一段時間的工程之路要走。所以很多公司使用R語言做原型試驗,演算法確定之後,再翻譯成工程語言。
Python也是數據科學家最喜歡的語言之一。和R語言不同,Python本身就是一門工程性語言,數據科學家用Python實現的演算法,可以直
接用在產品中,這對於大數據初創公司節省成本是非常有幫助的。正式因為數據科學家對Python和R的熱愛,Spark為了討好數據科學家,對這兩種語言
提供了非常好的支持。
Python的數據處理相關類庫非常多。高性能的科學計算類庫NumPy和SciPy,給其他高級演算法打了非常好的基礎,matploglib讓
Python畫圖變得像Matlab一樣簡單。Scikit-learn和Milk實現了很多機器學習演算法,基於這兩個庫實現的 Pylearn2 ,是深度學習領域的重要成員。 Theano 利用GPU加速,實現了高性能數學符號計算和多維矩陣計算。當然,還有 Pandas ,一個在工程領域已經廣泛使用的大數據處理類庫,其DataFrame的設計借鑒自R語言,後來又啟發了Spark項目實現了類似機制。
對了,還有 iPython ,這個工具如此有用,以至於我差點把他當成標准庫而忘了介紹。iPython是一個互動式Python運行環境,能夠實時看到每一段Python代碼的結果。默認情況下,iPython運行在命令行,可以執行 ipython notebook 在網頁中運行。用matplotlib繪制的圖可以直接嵌入式的顯示在iPython Notebook中。
iPython Notebook的筆記本文件可以共享給其他人,這樣其他人就可以在自己的環境中重現你的工作成果;如果對方沒有運行環境,還可以直接轉換成HTML或者PDF。
為什麼是Python
正是因為應用開發工程師、運維工程師、數據科學家都喜歡Python,才使得Python成為大數據系統的全棧式開發語言。
對於開發工程師而言,Python的優雅和簡潔無疑是最大的吸引力,在Python互動式環境中,執行 import this
,讀一讀Python之禪,你就明白Python為什麼如此吸引人。Python社區一直非常有活力,和NodeJS社區軟體包爆炸式增長不
同,Python的軟體包增長速度一直比較穩定,同時軟體包的質量也相對較高。有很多人詬病Python對於空格的要求過於苛刻,但正是因為這個要求,才
使得Python在做大型項目時比其他語言有優勢。OpenStack項目總共超過200萬行代碼,證明了這一點。
對於運維工程師而言,Python的最大優勢在於,幾乎所有Linux發行版都內置了Python解釋器。Shell雖然功能強大,但畢竟語法不夠優雅,寫比較復雜的任務會很痛苦。用Python替代Shell,做一些復雜的任務,對運維人員來說,是一次解放。
對於數據科學家而言,Python簡單又不失強大。和C/C++相比,不用做很多的底層工作,可以快速進行模型驗證;和Java相比,Python語法簡
潔,表達能力強,同樣的工作只需要1/3代碼;和Matlab,Octave相比,Python的工程成熟度更高。不止一個編程大牛表達過,Python
是最適合作為大學計算機科學編程課程使用的語言——MIT的計算機入門課程就是使用的Python——因為Python能夠讓人學到編程最重要的東西——
如何解決問題。
9. 如何編寫高質量的python程序
代碼規范
首先閱讀下面的兩份規范,並深入理解。
Python社區官方建議採用的Python編碼風格:PEP8 中文版
Google SoC 建議的 Python 編碼風格:Google Python Style Guide 中文版
寫出規范的代碼是寫出高質量代碼的第一步,並且有助於培養仔細的習慣。
為了培養規范寫代碼的習慣,可以安裝flake8這個型前工具,它不僅可以檢查代碼風格是否符合官方建議(PEP8),而且還能找出潛在的隱患(用Pyflakes做語法分析),更逆天的是還能檢測到你有些函數寫的太復雜(代碼圈復雜度)了,更更逆天的是可以設置git commit之前必須通過這些檢查。
當然具體操作需要根據自己的項目進行一些定製,比如可以忽略E501,W293。
空白項目模版
好的開始是成功的一半,寫python代碼就從pyempty開始吧。
在github上看一下那些經典的項目,web.py,flask, pep8,他們的項目目錄都很規范,綜合借鑒了一些項目的特點,我寫了這個pyempty項目。
1.README.md 這里寫你項目的簡介,quick start等信息,雖然distutils要求這個文件沒有後綴名,但github上如果後綴是.md的話可以直接轉換成html顯示。
2.ChangeLog.txt 該文件存放程序各版本的變更信息,也有一定的格式,參考web.py的ChangeLog.txt
3.LICENES.txt 這里存放你項目使用的協議,不要編寫自己的協議。
4.requirements.txt 如果你的項目需要依賴其它的python第三方庫,在這里一行一個寫出來,可能pip install的時候能自動幫你安裝
5.setup.py 安裝腳本,後面詳細介紹
6.docs 裡面存放你的項目文檔,如概要設計,詳細設計,維護文檔,pydoc自動生成的文檔等,強烈推薦大家使用MarkDown格式編寫文檔
7.src 這個目錄里存放項目模塊的主要代碼,盡量不要把模塊目錄直接放到根目錄,模塊代碼目錄可以卜櫻清在setup.py里指定的
8.tests 這個目錄存放所有單元測試,性能測試腳本,單元測試的文件確保以test_做前綴,這樣distutils會自動打包這些文件,並且用python -m unittest discover -s ./ -p 'test_*.py' -v 可以直接執行這些測試
單元測試
Martin Fowler:"在你不知道如何測試代碼之前,就不該編寫程序。而一旦你完成了程序,測試代碼也應該完成。除非測試成功,你不能認為你編寫出了可以工作的程序。"
我們有很多理由不寫單元測試,歸根結底是懶,雖然代碼大全上說:
大部分研究都發現,檢測比測試的成本更小。NASA軟體工程實驗室的一項研究發現,閱讀代碼每小時能夠檢測出來的缺陷要比測試高出80%左右(Basili and Selby 1987)。後來,IBM的一項研究又發現,檢查發現的一個錯誤只需要3.5個工作時,而測試則需要花費15-25個工作時(Kaplan 1995)。
但是單元測試還是讓別人相信你的代碼有很高質量的最有力證據。
好了,請詳細閱讀:
深入python3.0: 單元測試-2.x也適用
Unit testing framework 不完整中文版
文檔
敏捷開發不是提倡什麼文檔也不寫,沒有文檔就沒有傳承和積累,輪崗或新人接手任務就會遇到很大的麻煩,所以我決定每個項目最少要寫以下文檔:
1.nalysis.model.md 概要設計文檔,不同於README.md文件,該文檔應該寫於項目開發之前,把項目有哪些功能,大概分幾個模塊等項目整體概述信息寫一下。
2.design.model.md 詳細設計文檔,不用太詳細,至少把項目依賴哪些東西,誰依賴這個項目,重要演算法流程描述,代碼整體結構等寫出來。
3.maintain.md 維護文檔,這個我覺得最重要,你的服務都記錄哪些日誌,需要監控哪些業務指標,如何重啟,有哪些配置項等,沒這些東西,你的項目很難運維。
上面這些文檔都是項目全局性的文檔,不適合寫在docstring或注視里,所以要有單獨的文檔。
打包
python有專門的模塊打包系統distutils,你可以用這套機制把你的代碼打包並分發到Pypi上,這樣任何人都可以用pip或easy_install安裝你的模塊。
如果你頌肆開發的是內部項目,還可以用mypypi架設私有的pypi,然後把項目的大的版本更新發布到內部的pypi上,配置管理人員和運維人員可以很方便的從pypi上拉取代碼安裝到測試環境或生產環境。
發布大版本的時候要給版本命名及編寫ChangeList,可以參考Git Pro的相關章節,主要記住以下幾個命令。
git tag -a v0.1 -m 'my test tag' #給大版本命名,打Tag git describe master #給小版本命名,Git將會返回一個字元串,由三部分組成:最近一次標定的版本號,加上自那次標定之後的提交次數,再加上一段SHA-1值 git shortlog --no-merges master --not v0.1 #生成版本簡報,ChangeList
python有自己的打包機制,所以一般不要用git archive命令。
當然大版本管理用pypi管理比較合適,小的bug fix,緊急上線等好多公司都是用git直接從生產環境拉代碼更新,因為git,svn等可以很方便的撤銷某次更新,回滾到某個位置。
關於打包,請閱讀如下鏈接:
Python 打包指南
深入Python3.0:打包 Python 類庫
python打包:分發指定文件
10. vscode怎麼編譯python
最近在學習python,之前一直用notepad++作為編輯器,偶然發現了VScode便被它的顏值吸引。用過之後發現它啟動快速,插件豐富,下載安裝後幾乎不用怎麼配置就可以直接使用,而且還支持markdown。當然,最主要的還是好看:p
效果圖:
VScode下載地址
安裝python插件
打開VScode,Ctrl+p
輸入 "ext install python",搜索時間可能會比較長
選擇下載量最高的那個插件點擊安裝(根據網路情況,安裝時間不確定,我當初裝了挺久,我這邊已經下載好了所以顯示卸載)
到這邊VScode就可以編輯python代碼了,編輯完代碼按F5即可運行。初次運行會讓你選環境,選擇python即可。
默認按F5後需要再按一次F5程序才會運行,如果要按F5馬上運行需要將launch.json文件的 "stopOnEntry": true,改為 "stopOnEntry": false。
推介個插件,vscode-icons可以使VScode左側的資源管理器根據文件類型顯示圖標
配置flake8
安裝flake8之後寫代碼的時候編輯器就會提示哪裡出錯,代碼格式不規范也會提示
打開命令行
輸入 "pip install flake8"
安裝flake8成功後,打開VScode,文件->首選項->用戶設置,在settings.json文件中輸入"python.linting.flake8Enabled": true
配置yapf
安裝yapf之後在VScode中按Alt+Shift+F即可自動格式化代碼
打開命令行
輸入 "pip install yapf"
安裝yapf成功後,打開VScode,文件->首選項->用戶設置,在settings.json文件中輸入"python.formatting.provider": "yapf"
幾個小技巧
查看函數或者類的定義
Ctrl+滑鼠左鍵點擊函數名或者類名即可跳轉到定義處,在函數名或者類名上按F12也可以實現同樣功能
更改變數名
在變數名上按F2即可實現重命名變數
python斷點調試
在行號的左邊點擊即可設置斷點,在左邊的調試界面可以查看變數的變化
隱藏菜單欄
這個屬於個人習慣,如果你也感覺菜單欄很礙眼,可以點擊查看->切換菜單欄,即可隱藏菜單欄。需要菜單欄的時候按Alt鍵即可查看
設置快捷鍵
文件->首選項->鍵盤快捷方式,將需要的修改的快捷鍵的整個大括弧裡面的內容復制到右邊keybindings.json文件中,然後修改「key」的值為你需要的快捷鍵即可。我這邊只修改了復制一行和刪除一行的快捷鍵。
最後
有什麼需要補充或者哪裡有錯誤的歡迎大家指出(。・`ω´・)