① mac 怎麼打包python程序
編寫的程序必須要有GUI(圖形用戶界面),否則程序是不會有顯示的。
具體流程
1. 下載py2app
在此推薦使用Pycharm,下載第三方庫時很方便。具體為File > Default Settings > Prroject Interpreter > 「+」 搜索所需的包即可。若使用其他IDE,可通過終端輸入
pip install py2app
或
easy_install py2app
註:pip的安裝路徑要和interpreter的路徑保持一致,此處可能出現版本不一致的情況
2. 創建setup.py文件
cd /Users/apple/Desktop/function
py2applet --make-setup function.py
在此後,會顯示
Wrote setup.py
但如顯示
-bash: py2applet: command not found
說明未找到py2app中py2applet的位置,需手動輸入,執行以下命令(重新進入終端,否則路徑還在工作區)
sudo find / -name "py2applet" -type f
一般會搜索一段時間,在本人機器上地址為
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet
這樣的話,最初的命令變為
cd "工程路徑"
"py2applet地址" --make-setup "python文件名"
不出意外的話,會顯示
Wrote setup.py
說明setup文件已建立,其中具體內容會在以後提到。
3. 發布應用
接上一步,輸入
rm -rf build dist
python setup.py py2app
一個簡單的小程序就完成了,」.app」文件會在工程文件目錄下的dist文件夾中。
下為demo中命令行中所有命令
Apples-MacBook-Pro:~ apple$ cd /Users/apple/Desktop/helloworld
Apples-MacBook-Pro:helloworld apple$ /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet --make-setup helloworld.py
Wrote setup.py
Apples-MacBook-Pro:helloworld apple$ rm -rf build dist
Apples-MacBook-Pro:helloworld apple$ python setup.py py2app
running py2app
.........
.........
Done!
Apples-MacBook-Pro:helloworld apple$
到此為止,已完成小程序的發布。
4. 代碼及結果
import Tkinter as tk
root = tk.Tk()
root.title("hello")
tk.Button(root, text="Helloworld!").pack()
tk.mainloop()
② 如何安裝python擴展包
cmd里輸入pip命令
pip install opencv-python
這樣就是在安裝opencv
③ Python自動化測試框架有哪些
分享一些可用的Python自動化測試框架。
自動化測試常用的Python框架有哪些?常用的框架有Robot Framework、Pytest、UnitTest/PyUnit、Behave、Lettuce。Pytest、Robot Framework和UnitTest主要用於功能與單元測試,Lettuce和Behave僅適用於行為驅動測試。
一、Robot Framework
Python測試框架之一,Robot Framework被用在測試驅動(test-driven)類型的開發與驗收中。雖然是由Python開發而來,但是它也可以在基於.Net的IronPython和基於Java的Jython上運行。作為一個Python框架,Robot還能夠兼容諸如Windows、MacOS、以及Linux等平台。
在使用Robot Framework(RF)之前,需要先安裝Python 2.7.14及以上的版本。推薦使用Python 3.6.4,以確保適當的注釋能夠被添加到代碼段中,並能夠跟蹤程序的更改。同時還需要安裝Python包管理器--pip。
二、Pytest
適用於多種軟體測試的Pytest,是另一個Python類型的自動化測試框架。憑借著其開源和易學的特點,該工具經常被QA(質量分析)團隊、開發團隊、個人團隊、以及各種開源項目所使用。鑒於Pytest具有「斷言重寫(assert rewriting)」之類的實用功能,許多大型互聯網應用,如Dropbox和Mozilla,都已經從下面將要提到的unittest(Pyunit)切換到了Pytest之上。
除了基本的Python知識,用戶並不需要更多的技術儲備。另外,用戶只需要有一台帶有命令行界面的測試設備,並且安裝好了Python包管理器、以及可用於開發的IDE工具。
三、UnitTest/PyUnit
UnitTest/PyUnit一種標准化的針對單元測試的Python類自動化測試框架。基類TestCase提供了各種斷言方法、以及所有清理和設置的常式。因此,TestCase子類中的每一種方法都是以「test」作為名詞前綴,以標識它們能夠被作為測試用例所運行。用戶可以使用load方法和TestSuite類來分組、並載入各種測試。
可以通過聯合使用,來構建自定義的測試運行器。正如我們使用Junit去測試Selenium那樣,UnitTest也會用到UnitTest-sml-reporting、並能生成各種XML類型的報告。由於UnitTest默認使用了Python,因此我們並不需要什麼先決條件。除了需要具備Python框架的基本知識,您也可以額外地安裝pip、以及用於開發的IDE工具。
四、Behave
行為驅動開發是一種基於敏捷軟體開發的方法。它能夠鼓勵開發人員、業務參與者和QA人員,三者之間的協作。Python測試框架Behave允許團隊避開各種復雜的情況,去執行BDD測試。從本質上說該框架與SpecFlow和Cucumber相似,常被用於執行自動化測試。用戶可以通過簡單易讀的語言來編寫測試用例,並能夠在其執行期間粘貼到代碼之中。而且,那些被設定的行為規范與步驟,也可以被重用到其他的測試方案中。
任何具備Python基礎知識的人都可以使用Behave。其他先決條件還包括:先安裝Python 2.7.14及以上的版本。通過Python包管理器或pip來與Behave協作。大多數開發人員會選擇Pycharm作為開發環境,當然您也可以選用其他的IDE工具。
五、Lettuce
Lettuce是另一種基於Cucumber和Python的行為驅動類自動化工具。Lettuce主要專注於那些具有行為驅動開發特徵的普通任務。它不但簡單易用,而且能夠使得整個測試過程更流暢、甚至更有趣。安裝帶有IDE的Python 2.7.14、及以上的版本。當然,您也可以使用Pycharm或任何其他IDE工具。同時,您還需要安裝Python包管理器。
自動化測試的Python框架,Pytest、Robot Framework和UnitTest可主要用於功能與單元測試,而Lettuce和Behave僅適用於行為驅動測試。對於功能測試而言,Pytest是的。如果您是基於Python自動化測試的新手,Robot Framework是的入門工具。雖然其功能有所受限,但是它非常容易上手。對於基於Python的BDD測試而言,Lettuce和Behave同樣優秀。不過,如果你已經有了一定的Pytest經驗,那麼請使用Pytest-bdd。
④ 如何用python實現隨機森林分類
大家如何使用scikit-learn包中的類方法來進行隨機森林演算法的預測。其中講的比較好的是各個參數的具體用途。
這里我給出我的理解和部分翻譯:
參數說明:
最主要的兩個參數是n_estimators和max_features。
n_estimators:表示森林裡樹的個數。理論上是越大越好。但是伴隨著就是計算時間的增長。但是並不是取得越大就會越好,預測效果最好的將會出現在合理的樹個數。
max_features:隨機選擇特徵集合的子集合,並用來分割節點。子集合的個數越少,方差就會減少的越快,但同時偏差就會增加的越快。根據較好的實踐經驗。如果是回歸問題則:
max_features=n_features,如果是分類問題則max_features=sqrt(n_features)。
如果想獲取較好的結果,必須將max_depth=None,同時min_sample_split=1。
同時還要記得進行cross_validated(交叉驗證),除此之外記得在random forest中,bootstrap=True。但在extra-trees中,bootstrap=False。
這里也給出一篇老外寫的文章:調整你的隨機森林模型參數http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/
這里我使用了scikit-learn自帶的iris數據來進行隨機森林的預測:
[python]view plain
fromsklearn.
fromsklearn.
importnumpyasnp
fromsklearn.datasetsimportload_iris
iris=load_iris()
#printiris#iris的4個屬性是:萼片寬度萼片長度花瓣寬度花瓣長度標簽是花的種類:setosaversicolourvirginica
printiris['target'].shape
rf=RandomForestRegressor()#這里使用了默認的參數設置
rf.fit(iris.data[:150],iris.target[:150])#進行模型的訓練
#
#隨機挑選兩個預測不相同的樣本
instance=iris.data[[100,109]]
printinstance
print'instance0prediction;',rf.predict(instance[0])
print'instance1prediction;',rf.predict(instance[1])
printiris.target[100],iris.target[109]
[python]view plain
fromsklearn.cross_validationimportcross_val_score,ShuffleSplit
X=iris["data"]
Y=iris["target"]
names=iris["feature_names"]
rf=RandomForestRegressor()
scores=[]
foriinrange(X.shape[1]):
score=cross_val_score(rf,X[:,i:i+1],Y,scoring="r2",
cv=ShuffleSplit(len(X),3,.3))
scores.append((round(np.mean(score),3),names[i]))
printsorted(scores,reverse=True)