狠狠操夜夜甜|人妻在线中文字幕亚洲无码不卡av|一区二区欧美亚洲|日躁夜躁狠狠躁2001|亚洲,超碰,欧美|18AV成人电影|午夜成人免费在线|婷婷激情网深爱五月|色欲综合成人在线|在线美女搞黄大片

中企動力 > 頭條 > python有幾個版本

網(wǎng)站性能檢測評分

注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。

python有幾個版本

Anaconda多環(huán)境多版本下的python配置詳解 企業(yè)視頻課程

img

支絕悟

關(guān)注

最近學(xué)python,讀完了語法后在GitHub找了一些練習(xí)來做,由于學(xué)的是python3.x語法,而GitHub上的好多練習(xí)源碼都是基于2.x的,有些module在python3.x上沒有,因此為裝這些包折騰了好久,浪費了好些時間,這兩天才發(fā)現(xiàn)Anaconda這個神奇的軟件,一些常用的包都打包在里邊了。安裝完成之后也遇到了不少麻煩,可能是由于初學(xué),不習(xí)慣用命令行的緣故,因此網(wǎng)上有不少中文教程,但總是解決不了我的問題,最后還是官方文檔比較詳細(xì)。

python學(xué)習(xí)群330637182

conda測試指南

在開始這個conda測試之前,你應(yīng)該已經(jīng)下載并安裝好了Anaconda或者M(jìn)iniconda

注意:在安裝之后,你應(yīng)該關(guān)閉并重新打開windows命令行。

一、Conda測試過程:

使用conda。首先我們將要確認(rèn)你已經(jīng)安裝好了conda

配置環(huán)境。下一步我們將通過創(chuàng)建幾個環(huán)境來展示conda的環(huán)境管理功能。使你更加輕松的了解關(guān)于環(huán)境的一切。我們將學(xué)習(xí)如何確認(rèn)你在哪個環(huán)境中,以及如何做復(fù)制一個環(huán)境作為備份。

測試python。然后我們將檢查哪一個版本的python可以被安裝,以及安裝另一個版本的python,還有在兩個版本的python之間的切換。

檢查包。我們將1)羅列出安裝在我們電腦上的包,2)瀏覽可用的包,3)使用conda install命令來來安裝以及移除一些包。對于一些不能使用conda安裝的包,我們將4)在Anaconda.org網(wǎng)站上搜索。對于那些在其它位置的包,我們將5)使用pip命令來實現(xiàn)安裝。我們還會安裝一個可以免費試用30天的商業(yè)包IOPro

移除包、環(huán)境以及conda.我們將以學(xué)習(xí)刪除你的包、環(huán)境以及conda來結(jié)束這次測試。

二、完整過程

提示:在任何時候你可以通過在命令后邊跟上--help來獲得該命令的完整文檔。例如,你可以通過如下的命令來學(xué)習(xí)conda的update命令。

conda update --help

1. 管理conda:

Conda既是一個包管理器又是一個環(huán)境管理器。你肯定知道包管理器,它可以幫你發(fā)現(xiàn)和查看包。但是如果當(dāng)我們想要安裝一個包,但是這個包只支持跟我們目前使用的python不同的版本時。你只需要幾行命令,就可以搭建起一個可以運行另外python版本的環(huán)境。,這就是conda環(huán)境管理器的強大功能。

提示:無論你使用Linux、OS X或者Windows命令行工具,在你的命令行終端conda指令都是一樣的,除非有特別說明。

檢查conda已經(jīng)被安裝

為了確保你已經(jīng)在正確的位置安裝好了conda,讓我們來檢查你是否已經(jīng)成功安裝好了Anaconda。在你的命令行終端窗口,輸入如下代碼:

conda --version

Conda會返回你安裝Anaconda軟件的版本。

提示:如果你看到了錯誤信息,檢查你是否在安裝過程中選擇了僅為當(dāng)前用戶按安裝,并且是否以同樣的賬戶來操作。確保用同樣的賬戶登錄安裝了之后重新打開命令行終端窗口。

升級當(dāng)前版本的conda

接下來,讓我們通過使用如下update命令來升級conda:

conda update conda

conda將會比較新舊版本并且告訴你哪一個版本的conda可以被安裝。它也會通知你伴隨這次升級其它包同時升級的情況。

如果新版本的conda可用,它會提示你輸入y進(jìn)行升級.

proceed ([y]/n)? y

conda更新到最新版后,我們將進(jìn)入下一個主題。

2. 管理環(huán)境。

現(xiàn)在我們通過創(chuàng)建一些環(huán)境來展示conda的環(huán)境操作,然后移動它們。

創(chuàng)建并激活一個環(huán)境

使用conda create命令,后邊跟上你希望用來稱呼它的任何名字:

conda create --name snowflake biopython

這條命令將會給biopython包創(chuàng)建一個新的環(huán)境,位置在/envs/snowflakes

小技巧:很多跟在--后邊常用的命令選項,可以被略寫為一個短線加命令首字母。所以--name選項和-n的作用是一樣的。通過conda -h或conda –-help來看大量的縮寫。

激活這個新環(huán)境

Linux,OS X: source activate snowflakes

小技巧:新的開發(fā)環(huán)境會被默認(rèn)安裝在你conda目錄下的envs文件目錄下。你可以指定一個其他的路徑;去通過conda create -h了解更多信息吧。

小技巧:如果我們沒有指定安裝python的版本,donda會安裝我們最初安裝conda時所裝的那個版本的python。

創(chuàng)建第二個環(huán)境

這次讓我們來創(chuàng)建并命名一個新環(huán)境,然后安裝另一個版本的python以及兩個包 Astroid 和 Babel。

conda create -n bunnies python=3 Astroid Babel

這將創(chuàng)建第二個基于python3 ,包含Astroid 和 Babel 包,稱為bunnies的新環(huán)境,在/envs/bunnies文件夾里。

小技巧:在此同時安裝你想在這個環(huán)境中運行的包,

小提示:在你創(chuàng)建環(huán)境的同時安裝好所有你想要的包,在后來依次安裝可能會導(dǎo)致依賴性問題(貌似是,不太懂這個術(shù)語怎么翻)。

小技巧:你可以在conda create命令后邊附加跟多的條件,鍵入conda create –h 查看更多細(xì)節(jié)。

列出所有的環(huán)境

現(xiàn)在讓我們來檢查一下截至目前你所安裝的環(huán)境,使用conda environment info 命令來查看它:

conda info --envs

你將會看到如下的環(huán)境列表:

snowflakes * /home/username/miniconda/envs/snowflakes

bunnies /home/username/miniconda/envs/bunnies

root /home/username/miniconda

確認(rèn)當(dāng)前環(huán)境

你現(xiàn)在處于哪個環(huán)境中呢?snowflakes還是bunnies?想要確定它,輸入下面的代碼:

conda info -envis

conda將會顯示所有環(huán)境的列表,當(dāng)前環(huán)境會顯示在一個括號內(nèi)。

(snowflakes)

注意:conda有時也會在目前活動的環(huán)境前邊加上*號。

切換到另一個環(huán)境(activate/deactivate)

為了切換到另一個環(huán)境,鍵入下列命令以及所需環(huán)境的名字。

如果要從你當(dāng)前工作環(huán)境的路徑切換到系統(tǒng)根目錄時,鍵入:

Linux,OS X: source deactivate

當(dāng)該環(huán)境不再活動時,將不再被提前顯示。

復(fù)制一個環(huán)境

通過克隆來復(fù)制一個環(huán)境。這兒將通過克隆snowfllakes來創(chuàng)建一個稱為flowers的副本。

conda create -n flowers --clone snowflakes

通過conda info –-envs來檢查環(huán)境

你現(xiàn)在應(yīng)該可以看到一個環(huán)境列表:flowers, bunnies, and snowflakes.

刪除一個環(huán)境

如果你不想要這個名為flowers的環(huán)境,就按照如下方法移除該環(huán)境:

conda remove -n flowers --all

為了確定這個名為flowers的環(huán)境已經(jīng)被移除,輸入以下命令:

conda info -e

flowers 已經(jīng)不再在你的環(huán)境列表里了,所以我們知道它被刪除了。

學(xué)習(xí)更多關(guān)于環(huán)境的知識

如果你想學(xué)習(xí)更多關(guān)于conda的命令,就在該命令后邊跟上 -h

conda remove -h

3. 管理Python

conda對Python的管理跟其他包的管理類似,所以可以很輕松地管理和升級多個安裝。

檢查python版本

首先讓我們檢查那個版本的python可以被安裝:

conda search --full --name python

你可以使用conda search python來看到所有名字中含有“python”的包或者加上

--full --name

命令選項來列出完全與“python”匹配的包。

安裝一個不同版本的python

現(xiàn)在我們假設(shè)你需要python3來編譯程序,但是你不想覆蓋掉你的python2.7來升級,你可以創(chuàng)建并激活一個名為snakes的環(huán)境,并通過下面的命令來安裝最新版本的python3:

conda create -n snakes python=3

小提示:給環(huán)境取一個很形象的名字,例如“Python3”是很明智的,但是并不有趣。

確定環(huán)境添加成功

為了確保snakes環(huán)境已經(jīng)被安裝了,鍵入如下命令:

conda會顯示環(huán)境列表,當(dāng)前活動的環(huán)境會被括號括起來

(snakes)

檢查新的環(huán)境中的python版本

確保snakes環(huán)境中運行的是python3:

python --version

使用不同版本的python

為了使用不同版本的python,你可以切換環(huán)境,通過簡單的激活它就可以,讓我們看看如何返回默認(rèn)2.7

·Linux,OS X: source activate snowflakes

檢查python版本:

確保snowflakes環(huán)境中仍然在運行你安裝conda時安裝的那個版本的python。

注銷該環(huán)境

當(dāng)你完成了在snowflakes環(huán)境中的工作室,注銷掉該環(huán)境并轉(zhuǎn)換你的路徑到先前的狀態(tài):

·Linux,OS X:source deactivate

4. 管理包

現(xiàn)在讓我們來演示包。我們已經(jīng)安裝了一些包(Astroid,Babel和一些特定版本的python),當(dāng)我們創(chuàng)建一個新環(huán)境時。我們檢查我們已經(jīng)安裝了那些包,檢查哪些是可用的,尋找特定的包并安裝它。接下來我們在Anconda.org倉庫中查找并安裝一些指定的包,用conda來完成更多pip可以實現(xiàn)的安裝,并安裝一個商業(yè)包。

查看該環(huán)境中包和其版本的列表:

使用這條命令來查看哪個版本的python或其他程序安裝在了該環(huán)境中,或者確保某些包已經(jīng)被安裝了或被刪除了。在你的終端窗口中輸入:

conda list

使用conda命令查看可用包的列表

一個可用conda安裝的包的列表,按照Python版本分類,可以從這個地址獲得:

http://docs.continuum.io/anaconda/pkg-docs.html

查找一個包

首先讓我們來檢查我們需要的這個包是否可以通過conda來安裝:

conda search beautifulsoup4

它展示了這個包,所以我們知道它是可用的。

安裝一個新包

我們將在當(dāng)前環(huán)境中安裝這個Beautiful Soup包,使用conda命令如下;

conda install --name bunnies beautifulsoup4

提示:你必須告訴conda你要安裝環(huán)境的名字(-n bunies)否則它將會被安裝到當(dāng)前環(huán)境中。

現(xiàn)在激活bunnies環(huán)境,并且用conda list來顯示哪些程序被安裝了。

·Linux,OS X:source activate bunnies

從Anaconda.org安裝一個包

如果一個包不能使用conda安裝,我們接下來將在Anaconda.org網(wǎng)站查找。Anaconda.org向公開和私有包倉庫提供包管理服務(wù)。Anaconda.org是一個連續(xù)分析產(chǎn)品。

提示:你在Anaconda.org下載東西的時候不強制要求注冊。

為了從Anaconda.org下載到當(dāng)前的環(huán)境中,我們需要通過指定Anaconda.org為一個特定通道,通過輸入這個包的完整路徑來實現(xiàn)。

在瀏覽器中,去 http://anaconda.org 網(wǎng)站。我們查找一個叫“bottleneck”的包,所以在左上角的叫“Search Anaconda Cloud”搜索框中輸入“bottleneck”并點擊search按鈕。

Anaconda.org上會有超過一打的bottleneck包的版本可用,但是我們想要那個被下載最頻繁的版本。所以你可以通過下載量來排序,通過點擊Download欄。

點擊包的名字來選擇最常被下載的包。它會鏈接到Anaconda.org詳情頁顯示下載的具體命令:

conda install --channel https://conda .anaconda.ort/pandas bottleneck

檢查被下載的包

通過pip命令來安裝包

對于那些無法通過conda安裝或者從Anaconda.org獲得的包,我們通常可以用pip(“pip install packages”的簡稱)來安裝包。

提示: pip只是一個包管理器,所以它不能為你管理環(huán)境。pip甚至不能升級python,因為它不像conda一樣把python當(dāng)做包來處理。但是它可以安裝一些conda安裝不了的包,和vice versa(此處不會翻譯)。pip和conda都集成在Anaconda或miniconda里邊。

我們激活我們想放置程序的環(huán)境,然后通過pip安裝一個叫“See”的程序。

·Linux,OS X: source activate bunnies

檢查pip安裝

檢查See是否被安裝:

安裝商業(yè)包

安裝商業(yè)包與你安裝其他的包的過程異常。舉個例子,讓我們安裝并刪除一個更新的商業(yè)包的免費試用 IOPro,可以加速你的python處理速度:

conda install iopro

提示:除了學(xué)術(shù)使用,該版本在30天后試用期滿

你現(xiàn)在可以安裝以及檢查你想用conda安裝的任何包,無論使用conda命令、從Anaconda.org下載或者使用pip安裝,無論開源軟件還是商業(yè)包。

5. 移除包、環(huán)境、或者conda

如果你愿意的話。讓我們通過移除一個或多個試驗包、環(huán)境以及conda來結(jié)束這次測試指導(dǎo)。

移除包

假設(shè)你決定不再使用商業(yè)包IOPro。你可以在bunnies環(huán)境中移除它。

conda remove -n bunnies iopro

確認(rèn)包已經(jīng)被移除

使用conda list命令來確認(rèn)IOPro已經(jīng)被移除了

移除環(huán)境

我們不再需要snakes環(huán)境了,所以輸入以下命令:

conda remove -n snakes --all

確認(rèn)環(huán)境被移除

為了確認(rèn)snakes環(huán)境已經(jīng)被移除了,輸入以下命令:

conda info --envis

snakes不再顯示在環(huán)境列表里了,所以我們知道它已經(jīng)被刪除了

刪除conda

Linux,OS X:

移除Anaconda 或 Miniconda 安裝文件夾

rm -rf ~/miniconda OR rm -rf ~/anaconda

Windows:

去控制面板,點擊“添加或刪除程序”,選擇“Python2.7(Anaconda)”或“Python2.7(Miniconda)”并點擊刪除程序。

學(xué)習(xí)Python,你選哪個版本 2 vs 3 ? 互聯(lián)網(wǎng)視頻課程

img

思山

關(guān)注

Python一個很大的缺陷是版本2 和版本3 不兼容,初學(xué)者也經(jīng)常糾結(jié)是學(xué)2還是學(xué)3。2017年Semaphore 社區(qū)調(diào)查了 Python 在 Semaphore 的托管 CI 服務(wù)中構(gòu)建應(yīng)用程序的使用情況。

1、Python2和Python3 事情情況

2016年調(diào)查顯示有 70% 以上的用戶仍在使用 Python 2.7,Python 3 的使用率較低。2017年,Python 3 的使用出現(xiàn)了上漲,漲幅約 8.2%。如下圖所示:

2、升級新版本愿望

2016年,Python 3.5 的使用率達(dá)到 60%,Python 3.4 的使用率占 30%。2017年,3.5 版和 3.4 版的使用率分別只占 34% 和 20%,有 35% 的用戶已經(jīng)開始使用 Python 3.6。

可見,使用 Python 3 的群體更愿意進(jìn)行版本更新。

3、Python 2.7 和 Python 3 各版本的使用率對比

從圖中,可以看到 Python 3 版的用戶群體正在迅速擴(kuò)展。

現(xiàn)在,新入行的學(xué)習(xí)者,如果不是項目限制必須學(xué) Python 2.7,那還是直接學(xué) Python3 吧。

畢竟 Guido van Rossum 曾于 2014 年宣布 Python 2.7 支持時間延長到 2020 年。

Python Web 開發(fā)框架 Django 釋出了 2.0 版本。主要變化包括:停止支持 Python 2 系列。

大名鼎鼎的NumPy也宣布,從2019年1月1日開始,任何新的功能版本都只支持Python3。

Python2.x與Python3.x版本區(qū)別 行業(yè)視頻課程

img

咎山彤

關(guān)注

Python2.x與3.x版本區(qū)別 Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對于Python的早期版本,這是一個較大的升級。 為了不帶入過多的累贅,Python 3.0在設(shè)計的時候沒有考慮向下相容。 許多針對早期Python版本設(shè)計的程式都無法在Python 3.0上正常執(zhí)行。 為了照顧現(xiàn)有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Py..

Python2.x與3.x版本區(qū)別

Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對于Python的早期版本,這是一個較大的升級。

為了不帶入過多的累贅,Python 3.0在設(shè)計的時候沒有考慮向下相容。

許多針對早期Python版本設(shè)計的程式都無法在Python 3.0上正常執(zhí)行。

為了照顧現(xiàn)有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數(shù)。

新的Python程式建議使用Python 3.0版本的語法。

除非執(zhí)行環(huán)境無法安裝Python 3.0或者程式本身使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, py2exe, PIL等。

大多數(shù)第三方庫都正在努力地相容Python 3.0版本。即使無法立即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7來執(zhí)行。

主要變化

Python 3.0的變化主要在以下幾個方面:

print語句沒有了,取而代之的是print()函數(shù)。 Python 2.6與Python 2.7部分地支持這種形式的print語法。在Python 2.6與Python 2.7里面,以下三種形式是等價的:

print "fish"print ("fish") #注意print后面有個空格print("fish") #print()不能帶有任何其它參數(shù)然而,Python 2.6實際已經(jīng)支持新的print()語法:

from __future__ import print_functionprint("fish", "panda", sep=', ')新的str類別表示一個Unicode字串,相當(dāng)于Python 2.x版本的unicode類別。而位元組序列則用類似b"abc"的語法表示,用bytes類表示,相當(dāng)于Python 2.x的str類別。

現(xiàn)在兩種類別不能再隱式地自動轉(zhuǎn)換,因此在Python 3.x里面"fish"+b"panda"是錯誤。正確的寫法是"fish"+b"panda".decode("utf-8")。 Python 2.6可以自動地將位元組序列識別為Unicode字串,方法是:

from __future__ import unicode_literalsprint(repr("fish"))除法運算符"/"在Python 3.x內(nèi)總是返回浮點數(shù)。而在Python 2.6內(nèi)會判斷被除數(shù)與除數(shù)是否是整數(shù)。如果是整數(shù)會返回整數(shù)值,相當(dāng)于整除;浮點數(shù)則返回浮點數(shù)值。

為了讓Python 2.6統(tǒng)一返回浮點數(shù)值,可以:

from __future__ import pisionprint(3/2)捕獲異常的語法由except exc, var改為except exc as var。使用語法except (exc1, exc2) as var可以同時捕獲多種類別的異常。 Python 2.6已經(jīng)支援這兩種語法。集合(set) 的新寫法:{1,2,3,4}。注意{}仍然表示空的字典(dict) 。字典推導(dǎo)式(Dictionary comprehensions) {expr1: expr2 for k, v in d},這個語法等價于result={}for k, v in d.items(): result[expr1]=expr2return result集合推導(dǎo)式(Set Comprehensions) {expr1 for x in stuff}。這個語法等價于:

result = set()for x in stuff: result.add(expr1)return result八進(jìn)制數(shù)必須寫成0o777,原來的形式0777不能用了;二進(jìn)制必須寫成0b111。新增了一個bin()函數(shù)用于將一個整數(shù)轉(zhuǎn)換成二進(jìn)制字串。 Python 2.6已經(jīng)支援這兩種語法。dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip()不再返回列表,而是迭代器。如果兩個物件之間沒有定義明確的有意義的順序。使用<, >,<=, >=比較它們會投擲異常。比如1< ""在Python 2.6里面會返回True,而在Python 3.0里面會投擲異?!,F(xiàn)在cmp(), instance.__cmp__()函數(shù)已經(jīng)被刪除??梢宰⑨尯瘮?shù)的參數(shù)與返回值。此特性可方便IDE對原始碼進(jìn)行更深入的分析。例如給參數(shù)增加類別訊息:def sendMail(from_: str, to: str, title: str, body: str) -> bool: pass合并int與long類型。多個模塊被改名(根據(jù)PEP8):舊的名字新的名字_winregwinregConfigParserconfigparsercopy_regcopyregQueuequeueSocketServersocketserverreprreprlibStringIO模塊現(xiàn)在被合并到新的io模組內(nèi)。 new, md5, gopherlib等模塊被刪除。 Python 2.6已經(jīng)支援新的io模組。httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包內(nèi)。取消了exec語句,只剩下exec()函數(shù)。 Python 2.6已經(jīng)支援exec()函數(shù)。

詳細(xì)的多維度測評 看看哪個Python版本速度最快 行業(yè)視頻課程

img

萬靈珊

關(guān)注

哪個版本的 Python 最快?當(dāng)然,這些問題由多種因素決定,其中的主要的因素是什么呢?我們又如何為自己的應(yīng)用尋找最快的 Python 版本呢?帶著這些問題,Hackermoon 上一位叫 Anthony Shaw 的作者為我們做了一些測試。

Anthony Shaw :Dimension Data 的 Talent 集團(tuán)總監(jiān),Python 軟件基金會成員,Apache 基金會成員

以下是對作者原文的翻譯:

使用 Python 性能測試套件

正如之前我在 speed.python.org 網(wǎng)站提到的,Python 核心開發(fā)團(tuán)隊非常重視性能問題,這對于比較官方基準(zhǔn)和 CPython 版本非常有用。

如圖,測試結(jié)果很難直觀讀取其中不包含 PyPy

你可以通過執(zhí)行 pip install performance 命令來下載測試套件,然后執(zhí)行如下命令:

pyperformance run --python={chosen_python_runtime} -o my_results.json

該命令會針對 Python 的目標(biāo)版本多次運行一系列“實際”應(yīng)用程序,并記錄測試結(jié)果,取其平均值。

本文我對以下官方版本進(jìn)行了測試:

Python 2.7.10Python 3.4.4Python 3.5.4Python 3.6.1Python 3.7 beta 2(譯者注:作者進(jìn)行測試時 Python 3.7 版本還未正式發(fā)布,beta 2 性能與正式版非常接近,同樣具有參考價值。Python 3.7 正式發(fā)布內(nèi)容請看這里)

同時還測試了 PyPy(5.6)和 PyPy 3(5.10.0)。

測試結(jié)果

我根據(jù)這套測試用例進(jìn)行了測試,你也可以根據(jù)自己的情況自己編寫一套測試。

我編寫了一個簡單的腳本,來獲得性能數(shù)據(jù)文,并將它們繪制成了圖表。腳本代碼你可以在這里找到:

https://gist.github/tonybaloney/4e8e45f9128e9eb6e4f36c73ba5e5574

所有圖表都以秒為單位,數(shù)值越低,表示性能越好。

完整的測試結(jié)果及圖表展示可請參閱:

https://github/tonybaloney/performance_testing/tree/master/png

渲染 HTML 模板

django_html 測試將使用 Django 模板渲染引擎來構(gòu)建一個 150x150 的 HTML 表格。 它利用了 Django 引擎的 Content 和 Template 類。

如圖所示,Python 3.7 比 Python 2.7 快 1.19 倍,但除此之外,其他 Python 3 版本都沒有 Python 2.7 快。該結(jié)果與 speed.python.org 網(wǎng)站的測試結(jié)果一致。

PyPy 的測試結(jié)果顯示,PyPy 比 CPython 的任何 Python 版本都快,PyPy 3 比 PyPy 慢兩倍。Django 2.0 及更高版本已決定放棄對 Python 2 的支持,因此 PyPy 將不再與 Django 2 兼容。

啟動時間測試

該部分測試解釋器的啟動時間

如圖所示,Python 2.7 是所有測試版本中啟動速度最快的。

注:此處暫不討論 PyPy 的測試結(jié)果,文末再談。

加密測試(Crypto):crypto_paes

在這個測試中,Python 2 的速度明顯快于 Python 3,因為 Crypto 要求大量數(shù)字運算,而 Python 3 沒有 32 位整數(shù)類型,只有一個長整型(long integer)。

同樣差距比較明顯的是,PyPy 3 比 PyPy 慢 5 倍。

算法測試:n-queens

結(jié)果顯示,在 CPython 系列中,Python 3.7 性能最佳。此外,PyPy 3 和 PyPy 測試結(jié)果比較接近,PyPy 小勝。

浮點運算測試

“浮點”基準(zhǔn)測試需要人工創(chuàng)建繁重的浮點運算應(yīng)用程序,在這里我們通過 math.cos(),math.sin() 和 math.sqrt() 函數(shù)創(chuàng)建,總共創(chuàng)建 10 萬個浮點對象。

PyPy 非常適合浮點運算,在大量的數(shù)字運算、可預(yù)測的類型和方法以及循環(huán)上展現(xiàn)了非常優(yōu)秀的性能。Python 3.7 具有新的方法能快速調(diào)用操作碼,該操作碼正在此測試中剛好用上,表現(xiàn)佳。

正則表達(dá)式測試

在這項測試中,我選用了 50 個最受歡迎的網(wǎng)頁,并記錄了所有正則表達(dá)式的操作。 每個操作都被賦予權(quán)重,該權(quán)重是根據(jù)頁面流行度的估計以及在加載每個頁面時執(zhí)行的次數(shù)來計算的。 最后,數(shù)據(jù)中的字母使用 ROT13 進(jìn)行編碼,其方式不會影響正則表達(dá)式與輸入的匹配程度。

PyPy 的測試結(jié)果讓人大跌眼鏡,不知道它都經(jīng)歷了些什么......

補充:PyPy 后來看到了這項測試結(jié)果,花了幾個小時把問題修復(fù)了

Python 3 比 Python 2 快嗎?

綜上測試所述,答案是 Yes!雖然也有幾項測試結(jié)果顯示 Python 3 比 Python 2 慢:

加密測試:Python 3 的比 Python2 慢 1.35 倍(原因在上文已做解釋)啟動時間測試:Python 3 比 Python 2 慢 1.39 倍

但從整體結(jié)果來看,Python 3 更快。CPython 核心開發(fā)團(tuán)隊曾表示,啟動速度問題是他們在 3.8 和 3.9 版本中著重要解決的問題。

PyPy 很快,我要使用它嗎?

PyPy 有 JIT 即時編譯器,在執(zhí)行可預(yù)測的重復(fù)性任務(wù)時非常高效,而 Python 性能測試需要多次運行同一段代碼來保證準(zhǔn)確性,因此,PyPy 面對這種測試性能,表現(xiàn)比 CPython 更佳。

但是,PyPy 的 JIT 編譯器的顯著缺點就是啟動成本高,并且,許多 C 語言擴(kuò)展程序缺乏兼容性。另外,由于 PyPy 是用 Python 編寫的,許多模板在 PyPy 中無法工作,使用者需要時常進(jìn)行檢查。

PyPy 也同樣需要面對從 Python2 向 Python3 轉(zhuǎn)變的問題。PyPy3 還不太穩(wěn)定,PyTest 就已經(jīng)放棄了對 PyPy3 的支持。

結(jié)論

Python 在所有官方版本測試中表現(xiàn)最佳,PyPy 在解釋器測試的表現(xiàn)最佳。Python 2 以后會用得越來越少,直到廢棄。如果 PyPy 3 的速度始終不能比 PyPy 快,能有所提升也是好的。

Raspberry pi中python版本的切換 行業(yè)視頻課程

img

雪柳

關(guān)注

這個問題其實也不是在樹莓派上的問題,在linux上都有這個問題,我們知道python有很多的版本,比較常用的是2.7和3.0。然而在有些時候,有些包對版本的要求很高。有時候我們不得不去裝幾個版本的python。

我們就以樹莓派為例來說一下:我們知道樹莓派自帶了一個python2.7。

它的可執(zhí)行文件在這個目錄下:/usr/bin/python

那現(xiàn)在我要去安裝一個python 3.5。這個地方我們直接可使用源碼安裝,github上源碼很多的。不需要我們先刪除python2.7。

這個地方源碼安裝的可執(zhí)行文件不在/usr/bin/中,它在/usr/local/bin/中

下面我們就開始切換版本了:

開始之前拷貝是很有必要的,萬一搞錯了呢。sudo cp /usr/bin/python /usr/bin/python_bak刪除以前的這個2.7。sudo rm /usr/bin/python重新指定新的鏈接。sudo ln -s /usr/local/bin/python3.5 /usr/bin/python

這其實就成功了?,F(xiàn)在的版本就是3.5了。

那么我們怎么在切換回去呢?

sudo cp /usr/bin/python /usr/bin/python3.5_baksudo rm /usr/bin/pythonsudo ln -s /usr/bin/python2.7 /usr/bin/python

在附帶一個源碼裝python3.6.4的教程吧:

先安裝依賴sudo apt-get installbuild-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev libssl-dev openssl libgdbm-dev liblzma-dev libreadline-dev libncursesw5-dev現(xiàn)下載源碼,再解壓tar -zvxf Python-3.6.4.tgz進(jìn)入該目錄下:

./configuremake

sudo make install

這就安裝上了,自己也可以自由切換了。

Python哪個版本適合初學(xué)者 互聯(lián)網(wǎng)視頻課程

img

沈凝陽

關(guān)注

想學(xué)習(xí)Python的人都會有一個困惑,那就是Python目前有兩個版本Python2和Python3,Python2與Python3有何區(qū)別,兩個版本該學(xué)習(xí)哪個呢?

python3 和 python2 是不兼容的,而且差異比較大,python3是不向下兼容的,但是絕大多數(shù)組件和擴(kuò)展都是基于python2的。目前實際應(yīng)用中大部分暫不考慮 Python3,有的時候注意寫兼容 2/3 的代碼。用 Python2 為主的寫新代碼時要考慮以后遷移到 Python3 的可能性。據(jù)數(shù)據(jù)統(tǒng)計顯示目前10% 使用 Python 3;20% 既使用Python 2也使用Python 3,Python 2用的更多;70% 使用Python 2。

其實python是linux上最常用的軟件之一,但是linux目前的版本大部分還是使用python2的,而且,在linux上依賴python2的程序更多一些,所以 Python3 要代替 python2 成為主流還需要幾年的時間。如果為了找工作還是學(xué)Python 2,學(xué)會了Python 2,由Python 2轉(zhuǎn)到python3也不難。

說了半天,Python2與Python3到底有何區(qū)別呢?

1.性能

Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認(rèn)為Py3.0有極大的優(yōu)化空間,在字符串和整形操作上可以取得很好的優(yōu)化結(jié)果。

Py3.1性能比Py2.5慢15%,還有很大的提升空間。

2.編碼

Py3.X源碼文件默認(rèn)使用utf-8編碼

3. 語法

1)去除了<>,全部改用!=

2)去除``,全部改用repr()

3)關(guān)鍵詞加入as 和with,還有True,False,None

4)整型除法返回浮點數(shù),要得到整型結(jié)果,請使用//

5)加入nonlocal語句。使用noclocal x可以直接指派外圍(非全局)變量

6)去除print語句,加入print()函數(shù)實現(xiàn)相同的功能。同樣的還有 exec語句,已經(jīng)改為exec()函數(shù)

7)改變了順序操作符的行為,例如x

8)輸入函數(shù)改變了,刪除了raw_input,用input代替:

9)去除元組參數(shù)解包。不能def(a, (b, c)):pass這樣定義函數(shù)了

10)新式的8進(jìn)制字變量,相應(yīng)地修改了oct()函數(shù)。

11)增加了 2進(jìn)制字面量和bin()函數(shù)

12)擴(kuò)展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求兩點:rest是list 對象和seq是可迭代的。

13)新的super(),可以不再給super()傳參數(shù),

14)新的metaclass語法:

15)支持class decorator。

4. 字符串和字節(jié)串

1)現(xiàn)在字符串只有str一種類型,但它跟2.x版本的unicode幾乎一樣。

2)關(guān)于字節(jié)串,請參閱“數(shù)據(jù)類型”的第2條目

5.數(shù)據(jù)類型

1)Py3.X去除了long類型,現(xiàn)在只有一種整型——int,但它的行為就像2.X版本的long

2)新增了bytes類型

6.面向?qū)ο?/p>

1)引入抽象基類(Abstraact Base Classes,ABCs)。

2)容器類和迭代器類被ABCs化,所以cellections模塊里的類型比Py2.5多了很多。

3)迭代器的next()方法改名為__next__(),并增加內(nèi)置函數(shù)next(),用以調(diào)用迭代器的

4)增加了@abstractmethod和 @abstractproperty兩個 decorator,編寫抽象方法(屬性)更加方便。

7.異常

1)所以異常都從 BaseException繼承,并刪除了StardardError

2)去除了異常類的序列行為和.message屬性

3)用 raise Exception(args)代替 raise Exception, args語法

4)捕獲異常的語法改變,引入了as關(guān)鍵字來標(biāo)識異常實例

5)異常鏈,因為__context__在3.0a1版本中沒有實現(xiàn)

8.模塊變動1)移除了cPickle模塊,可以使用pickle模塊代替。最終我們將會有一個透明高效的模塊。

2)移除了imageop模塊

3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, imeWriter, mimify, popen2, rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模塊

4)移除了bsddb模塊(單獨發(fā)布,可以從Python "bindings" for Oracle Berkeley DB獲取)

5)移除了new模塊

6)os.tmpnam()和os.tmpfile()函數(shù)被移動到tmpfile模塊下

7)tokenize模塊現(xiàn)在使用bytes工作。主要的入口點不再是generate_tokens,而是 tokenize.tokenize()

9.其它 1)xrange() 改名為range(),要想使用range()獲得一個list,必須顯式調(diào)用

2)bytes對象不能hash,也不支持 b.lower()、b.strip()和b.split()方法

3)zip()、map()和filter()都返回迭代器。

4)string.letters和相關(guān)的.lowercase和.uppercase被去除,請改用string.ascii_letters 等

5)如果x< y的不能比較,拋出TypeError異常

6)__getslice__系列成員被廢棄。

7)file類被廢棄

比較一下不同Python版本,看哪個最快? 行業(yè)視頻課程

img

老亮

關(guān)注

本文所選的Python版本:

2.7.10,

3.4.4,

3.5.4,

3.6.1,和

3.7(我有beta 2)。

此外,這包括PyPy(5.6。)和PyPy3(5.4.10)。

呈現(xiàn)HTML模板

該django_html測試將使用Django模板渲染引擎,以建立一個150×150的HTML表格。它利用了Django引擎的內(nèi)容和模板類。

Python 3.7的速度比Python 2.7快1.19倍,但是它是唯一一個能夠擊敗我運行的Python 2.7基準(zhǔn)的Python 3.x版本。speed.python.org基準(zhǔn)測試顯示類似的結(jié)果。

PyPy可以摧毀任何CPython結(jié)果,但PyPy3會比PyPy慢兩倍。值得注意的是Django最近決定在Django 2.0及更高版本中放棄對Python 2的支持,這意味著PyPy將不再與Django 2兼容。

啟動時間

該測試只是測試解釋器啟動所花費的時間。如果您通過運行多個進(jìn)程來解決Python的“GIL”約束,那么這將非常重要。

Cryptography: crypto_paes

在這個測試中,你會看到Python 2和3之間的速度明顯下降。為什么?加密需要大量的數(shù)字運算,Python 3不再具有32位整數(shù)類型,只有一個(非常)長整數(shù)。

PyPy用戶 - 您會注意到PyPy3 比PyPy 慢5倍!

n-queens:算法測試

在CPython系列中,3.7 又一次出現(xiàn),但值得注意的是PyPy和PyPy3的結(jié)果非常相似。

浮點運算

“浮動”的基準(zhǔn)是一種人為的,浮點運算繁重的應(yīng)用程序,將創(chuàng)建計算10萬點的對象math.cos(),math.sin()和math.sqrt() 。

這是PyPy的完美應(yīng)用,大量的數(shù)據(jù)處理,可預(yù)測的類型和方法以及循環(huán)。Python 3.7具有新的快速方法調(diào)用操作碼,該操作碼正在此測試中使用。

常用表達(dá)

在正則表達(dá)式測試中,“網(wǎng)絡(luò)上最流行的網(wǎng)頁有50個,并記錄了所有正則表達(dá)式操作。每個操作都有一個權(quán)重,它是根據(jù)頁面出現(xiàn)的熱門程度以及加載每個頁面時執(zhí)行的次數(shù)來估算的。最后,使用ROT13對數(shù)據(jù)中的字母進(jìn)行編碼,這樣不會影響正則表達(dá)式匹配其輸入的方式?!?/p>

那么Python 3比Python 2更快嗎?

是! 在幾乎所有的測試中。值得注意的例外是crypto_paes測試,Python 3的速度慢了1.35倍(因為整數(shù)類型),python_startup的速度慢了1.39倍。

緩慢的Python 3啟動是核心CPython團(tuán)隊正在為3.8,3.9版本開發(fā)的問題之一。

除了這兩項測試外,Python 3在這些基準(zhǔn)測試中的速度大約快1.2-1.3倍。今年晚些時候,你會看到升級到Python 3.7的改進(jìn)。

為什么PyPy要快得多,為什么不是每個人都使用它呢?

PyPy比CPython快,因為它具有即時編譯器。JIT編譯器具有很大的好處,因為它們在執(zhí)行可預(yù)測的重復(fù)性任務(wù)時非常高效?;鶞?zhǔn)的其中一個特點是,您嘗試多次運行同一段代碼以使其準(zhǔn)確無誤,推送應(yīng)用程序并減少錯誤邊界。正如PyPy照耀這些測試。

JIT編譯器,尤其是PyPy的缺點是啟動成本高。另一個缺點是許多C-Extensions缺乏兼容性。因為“Python”(CPython,官方的PSF Python)是用C語言編寫的,PyPi上的許多第三方擴(kuò)展利用了這一點。Numpy就是一個很好的例子,Numpy的大部分都是用優(yōu)化的C代碼編寫的。當(dāng)你pip install numpy使用本地C編譯器并為你的Python運行時建立一個二進(jìn)制庫來使用。

由于PyPy是用Python編寫的,很多模塊根本無法在PyPy中工作。

此外,PyPy也遭遇了與CPython相同的挑戰(zhàn) - 從語言版本2轉(zhuǎn)移到版本3. PyPy3直到最近我發(fā)現(xiàn)它仍然不穩(wěn)定,在基準(zhǔn)測試中,您仍然可以看到與PyPy的奇怪不一致。我還遇到了一些軟件包問題(例如PyTest),他們放棄了對PyPy3的支持,但他們解決了問題。

Anaconda多環(huán)境多版本下的python配置詳解 企業(yè)視頻課程

img

巴拉奧納

關(guān)注

最近學(xué)python,讀完了語法后在GitHub找了一些練習(xí)來做,由于學(xué)的是python3.x語法,而GitHub上的好多練習(xí)源碼都是基于2.x的,有些module在python3.x上沒有,因此為裝這些包折騰了好久,浪費了好些時間,這兩天才發(fā)現(xiàn)Anaconda這個神奇的軟件,一些常用的包都打包在里邊了。安裝完成之后也遇到了不少麻煩,可能是由于初學(xué),不習(xí)慣用命令行的緣故,因此網(wǎng)上有不少中文教程,但總是解決不了我的問題,最后還是官方文檔比較詳細(xì)。

python學(xué)習(xí)群330637182

conda測試指南

在開始這個conda測試之前,你應(yīng)該已經(jīng)下載并安裝好了Anaconda或者M(jìn)iniconda

注意:在安裝之后,你應(yīng)該關(guān)閉并重新打開windows命令行。

一、Conda測試過程:

使用conda。首先我們將要確認(rèn)你已經(jīng)安裝好了conda

配置環(huán)境。下一步我們將通過創(chuàng)建幾個環(huán)境來展示conda的環(huán)境管理功能。使你更加輕松的了解關(guān)于環(huán)境的一切。我們將學(xué)習(xí)如何確認(rèn)你在哪個環(huán)境中,以及如何做復(fù)制一個環(huán)境作為備份。

測試python。然后我們將檢查哪一個版本的python可以被安裝,以及安裝另一個版本的python,還有在兩個版本的python之間的切換。

檢查包。我們將1)羅列出安裝在我們電腦上的包,2)瀏覽可用的包,3)使用conda install命令來來安裝以及移除一些包。對于一些不能使用conda安裝的包,我們將4)在Anaconda.org網(wǎng)站上搜索。對于那些在其它位置的包,我們將5)使用pip命令來實現(xiàn)安裝。我們還會安裝一個可以免費試用30天的商業(yè)包IOPro

移除包、環(huán)境以及conda.我們將以學(xué)習(xí)刪除你的包、環(huán)境以及conda來結(jié)束這次測試。

二、完整過程

提示:在任何時候你可以通過在命令后邊跟上--help來獲得該命令的完整文檔。例如,你可以通過如下的命令來學(xué)習(xí)conda的update命令。

conda update --help

1. 管理conda:

Conda既是一個包管理器又是一個環(huán)境管理器。你肯定知道包管理器,它可以幫你發(fā)現(xiàn)和查看包。但是如果當(dāng)我們想要安裝一個包,但是這個包只支持跟我們目前使用的python不同的版本時。你只需要幾行命令,就可以搭建起一個可以運行另外python版本的環(huán)境。,這就是conda環(huán)境管理器的強大功能。

提示:無論你使用Linux、OS X或者Windows命令行工具,在你的命令行終端conda指令都是一樣的,除非有特別說明。

檢查conda已經(jīng)被安裝

為了確保你已經(jīng)在正確的位置安裝好了conda,讓我們來檢查你是否已經(jīng)成功安裝好了Anaconda。在你的命令行終端窗口,輸入如下代碼:

conda --version

Conda會返回你安裝Anaconda軟件的版本。

提示:如果你看到了錯誤信息,檢查你是否在安裝過程中選擇了僅為當(dāng)前用戶按安裝,并且是否以同樣的賬戶來操作。確保用同樣的賬戶登錄安裝了之后重新打開命令行終端窗口。

升級當(dāng)前版本的conda

接下來,讓我們通過使用如下update命令來升級conda:

conda update conda

conda將會比較新舊版本并且告訴你哪一個版本的conda可以被安裝。它也會通知你伴隨這次升級其它包同時升級的情況。

如果新版本的conda可用,它會提示你輸入y進(jìn)行升級.

proceed ([y]/n)? y

conda更新到最新版后,我們將進(jìn)入下一個主題。

2. 管理環(huán)境。

現(xiàn)在我們通過創(chuàng)建一些環(huán)境來展示conda的環(huán)境操作,然后移動它們。

創(chuàng)建并激活一個環(huán)境

使用conda create命令,后邊跟上你希望用來稱呼它的任何名字:

conda create --name snowflake biopython

這條命令將會給biopython包創(chuàng)建一個新的環(huán)境,位置在/envs/snowflakes

小技巧:很多跟在--后邊常用的命令選項,可以被略寫為一個短線加命令首字母。所以--name選項和-n的作用是一樣的。通過conda -h或conda –-help來看大量的縮寫。

激活這個新環(huán)境

Linux,OS X: source activate snowflakes

小技巧:新的開發(fā)環(huán)境會被默認(rèn)安裝在你conda目錄下的envs文件目錄下。你可以指定一個其他的路徑;去通過conda create -h了解更多信息吧。

小技巧:如果我們沒有指定安裝python的版本,donda會安裝我們最初安裝conda時所裝的那個版本的python。

創(chuàng)建第二個環(huán)境

這次讓我們來創(chuàng)建并命名一個新環(huán)境,然后安裝另一個版本的python以及兩個包 Astroid 和 Babel。

conda create -n bunnies python=3 Astroid Babel

這將創(chuàng)建第二個基于python3 ,包含Astroid 和 Babel 包,稱為bunnies的新環(huán)境,在/envs/bunnies文件夾里。

小技巧:在此同時安裝你想在這個環(huán)境中運行的包,

小提示:在你創(chuàng)建環(huán)境的同時安裝好所有你想要的包,在后來依次安裝可能會導(dǎo)致依賴性問題(貌似是,不太懂這個術(shù)語怎么翻)。

小技巧:你可以在conda create命令后邊附加跟多的條件,鍵入conda create –h 查看更多細(xì)節(jié)。

列出所有的環(huán)境

現(xiàn)在讓我們來檢查一下截至目前你所安裝的環(huán)境,使用conda environment info 命令來查看它:

conda info --envs

你將會看到如下的環(huán)境列表:

snowflakes * /home/username/miniconda/envs/snowflakes

bunnies /home/username/miniconda/envs/bunnies

root /home/username/miniconda

確認(rèn)當(dāng)前環(huán)境

你現(xiàn)在處于哪個環(huán)境中呢?snowflakes還是bunnies?想要確定它,輸入下面的代碼:

conda info -envis

conda將會顯示所有環(huán)境的列表,當(dāng)前環(huán)境會顯示在一個括號內(nèi)。

(snowflakes)

注意:conda有時也會在目前活動的環(huán)境前邊加上*號。

切換到另一個環(huán)境(activate/deactivate)

為了切換到另一個環(huán)境,鍵入下列命令以及所需環(huán)境的名字。

如果要從你當(dāng)前工作環(huán)境的路徑切換到系統(tǒng)根目錄時,鍵入:

Linux,OS X: source deactivate

當(dāng)該環(huán)境不再活動時,將不再被提前顯示。

復(fù)制一個環(huán)境

通過克隆來復(fù)制一個環(huán)境。這兒將通過克隆snowfllakes來創(chuàng)建一個稱為flowers的副本。

conda create -n flowers --clone snowflakes

通過conda info –-envs來檢查環(huán)境

你現(xiàn)在應(yīng)該可以看到一個環(huán)境列表:flowers, bunnies, and snowflakes.

刪除一個環(huán)境

如果你不想要這個名為flowers的環(huán)境,就按照如下方法移除該環(huán)境:

conda remove -n flowers --all

為了確定這個名為flowers的環(huán)境已經(jīng)被移除,輸入以下命令:

conda info -e

flowers 已經(jīng)不再在你的環(huán)境列表里了,所以我們知道它被刪除了。

學(xué)習(xí)更多關(guān)于環(huán)境的知識

如果你想學(xué)習(xí)更多關(guān)于conda的命令,就在該命令后邊跟上 -h

conda remove -h

3. 管理Python

conda對Python的管理跟其他包的管理類似,所以可以很輕松地管理和升級多個安裝。

檢查python版本

首先讓我們檢查那個版本的python可以被安裝:

conda search --full --name python

你可以使用conda search python來看到所有名字中含有“python”的包或者加上

--full --name

命令選項來列出完全與“python”匹配的包。

安裝一個不同版本的python

現(xiàn)在我們假設(shè)你需要python3來編譯程序,但是你不想覆蓋掉你的python2.7來升級,你可以創(chuàng)建并激活一個名為snakes的環(huán)境,并通過下面的命令來安裝最新版本的python3:

conda create -n snakes python=3

小提示:給環(huán)境取一個很形象的名字,例如“Python3”是很明智的,但是并不有趣。

確定環(huán)境添加成功

為了確保snakes環(huán)境已經(jīng)被安裝了,鍵入如下命令:

conda會顯示環(huán)境列表,當(dāng)前活動的環(huán)境會被括號括起來

(snakes)

檢查新的環(huán)境中的python版本

確保snakes環(huán)境中運行的是python3:

python --version

使用不同版本的python

為了使用不同版本的python,你可以切換環(huán)境,通過簡單的激活它就可以,讓我們看看如何返回默認(rèn)2.7

·Linux,OS X: source activate snowflakes

檢查python版本:

確保snowflakes環(huán)境中仍然在運行你安裝conda時安裝的那個版本的python。

注銷該環(huán)境

當(dāng)你完成了在snowflakes環(huán)境中的工作室,注銷掉該環(huán)境并轉(zhuǎn)換你的路徑到先前的狀態(tài):

·Linux,OS X:source deactivate

4. 管理包

現(xiàn)在讓我們來演示包。我們已經(jīng)安裝了一些包(Astroid,Babel和一些特定版本的python),當(dāng)我們創(chuàng)建一個新環(huán)境時。我們檢查我們已經(jīng)安裝了那些包,檢查哪些是可用的,尋找特定的包并安裝它。接下來我們在Anconda.org倉庫中查找并安裝一些指定的包,用conda來完成更多pip可以實現(xiàn)的安裝,并安裝一個商業(yè)包。

查看該環(huán)境中包和其版本的列表:

使用這條命令來查看哪個版本的python或其他程序安裝在了該環(huán)境中,或者確保某些包已經(jīng)被安裝了或被刪除了。在你的終端窗口中輸入:

conda list

使用conda命令查看可用包的列表

一個可用conda安裝的包的列表,按照Python版本分類,可以從這個地址獲得:

http://docs.continuum.io/anaconda/pkg-docs.html

查找一個包

首先讓我們來檢查我們需要的這個包是否可以通過conda來安裝:

conda search beautifulsoup4

它展示了這個包,所以我們知道它是可用的。

安裝一個新包

我們將在當(dāng)前環(huán)境中安裝這個Beautiful Soup包,使用conda命令如下;

conda install --name bunnies beautifulsoup4

提示:你必須告訴conda你要安裝環(huán)境的名字(-n bunies)否則它將會被安裝到當(dāng)前環(huán)境中。

現(xiàn)在激活bunnies環(huán)境,并且用conda list來顯示哪些程序被安裝了。

·Linux,OS X:source activate bunnies

從Anaconda.org安裝一個包

如果一個包不能使用conda安裝,我們接下來將在Anaconda.org網(wǎng)站查找。Anaconda.org向公開和私有包倉庫提供包管理服務(wù)。Anaconda.org是一個連續(xù)分析產(chǎn)品。

提示:你在Anaconda.org下載東西的時候不強制要求注冊。

為了從Anaconda.org下載到當(dāng)前的環(huán)境中,我們需要通過指定Anaconda.org為一個特定通道,通過輸入這個包的完整路徑來實現(xiàn)。

在瀏覽器中,去 http://anaconda.org 網(wǎng)站。我們查找一個叫“bottleneck”的包,所以在左上角的叫“Search Anaconda Cloud”搜索框中輸入“bottleneck”并點擊search按鈕。

Anaconda.org上會有超過一打的bottleneck包的版本可用,但是我們想要那個被下載最頻繁的版本。所以你可以通過下載量來排序,通過點擊Download欄。

點擊包的名字來選擇最常被下載的包。它會鏈接到Anaconda.org詳情頁顯示下載的具體命令:

conda install --channel https://conda .anaconda.ort/pandas bottleneck

檢查被下載的包

通過pip命令來安裝包

對于那些無法通過conda安裝或者從Anaconda.org獲得的包,我們通??梢杂胮ip(“pip install packages”的簡稱)來安裝包。

提示: pip只是一個包管理器,所以它不能為你管理環(huán)境。pip甚至不能升級python,因為它不像conda一樣把python當(dāng)做包來處理。但是它可以安裝一些conda安裝不了的包,和vice versa(此處不會翻譯)。pip和conda都集成在Anaconda或miniconda里邊。

我們激活我們想放置程序的環(huán)境,然后通過pip安裝一個叫“See”的程序。

·Linux,OS X: source activate bunnies

檢查pip安裝

檢查See是否被安裝:

安裝商業(yè)包

安裝商業(yè)包與你安裝其他的包的過程異常。舉個例子,讓我們安裝并刪除一個更新的商業(yè)包的免費試用 IOPro,可以加速你的python處理速度:

conda install iopro

提示:除了學(xué)術(shù)使用,該版本在30天后試用期滿

你現(xiàn)在可以安裝以及檢查你想用conda安裝的任何包,無論使用conda命令、從Anaconda.org下載或者使用pip安裝,無論開源軟件還是商業(yè)包。

5. 移除包、環(huán)境、或者conda

如果你愿意的話。讓我們通過移除一個或多個試驗包、環(huán)境以及conda來結(jié)束這次測試指導(dǎo)。

移除包

假設(shè)你決定不再使用商業(yè)包IOPro。你可以在bunnies環(huán)境中移除它。

conda remove -n bunnies iopro

確認(rèn)包已經(jīng)被移除

使用conda list命令來確認(rèn)IOPro已經(jīng)被移除了

移除環(huán)境

我們不再需要snakes環(huán)境了,所以輸入以下命令:

conda remove -n snakes --all

確認(rèn)環(huán)境被移除

為了確認(rèn)snakes環(huán)境已經(jīng)被移除了,輸入以下命令:

conda info --envis

snakes不再顯示在環(huán)境列表里了,所以我們知道它已經(jīng)被刪除了

刪除conda

Linux,OS X:

移除Anaconda 或 Miniconda 安裝文件夾

rm -rf ~/miniconda OR rm -rf ~/anaconda

Windows:

去控制面板,點擊“添加或刪除程序”,選擇“Python2.7(Anaconda)”或“Python2.7(Miniconda)”并點擊刪除程序。

Python哪個版本適合初學(xué)者 公司視頻課程

img

韶華

關(guān)注

想學(xué)習(xí)Python的人都會有一個困惑,那就是Python目前有兩個版本Python2和Python3,Python2與Python3有何區(qū)別,兩個版本該學(xué)習(xí)哪個呢?

python3 和 python2 是不兼容的,而且差異比較大,python3是不向下兼容的,但是絕大多數(shù)組件和擴(kuò)展都是基于python2的。目前實際應(yīng)用中大部分暫不考慮 Python3,有的時候注意寫兼容 2/3 的代碼。用 Python2 為主的寫新代碼時要考慮以后遷移到 Python3 的可能性。據(jù)數(shù)據(jù)統(tǒng)計顯示目前10% 使用 Python 3;20% 既使用Python 2也使用Python 3,Python 2用的更多;70% 使用Python 2。

其實python是linux上最常用的軟件之一,但是linux目前的版本大部分還是使用python2的,而且,在linux上依賴python2的程序更多一些,所以 Python3 要代替 python2 成為主流還需要幾年的時間。如果為了找工作還是學(xué)Python 2,學(xué)會了Python 2,由Python 2轉(zhuǎn)到python3也不難。

說了半天,Python2與Python3到底有何區(qū)別呢?

1.性能

Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認(rèn)為Py3.0有極大的優(yōu)化空間,在字符串和整形操作上可以取得很好的優(yōu)化結(jié)果。

Py3.1性能比Py2.5慢15%,還有很大的提升空間。

2.編碼

Py3.X源碼文件默認(rèn)使用utf-8編碼

3. 語法

1)去除了<>,全部改用!=

2)去除``,全部改用repr()

3)關(guān)鍵詞加入as 和with,還有True,False,None

4)整型除法返回浮點數(shù),要得到整型結(jié)果,請使用//

5)加入nonlocal語句。使用noclocal x可以直接指派外圍(非全局)變量

6)去除print語句,加入print()函數(shù)實現(xiàn)相同的功能。同樣的還有 exec語句,已經(jīng)改為exec()函數(shù)

7)改變了順序操作符的行為,例如x

8)輸入函數(shù)改變了,刪除了raw_input,用input代替:

9)去除元組參數(shù)解包。不能def(a, (b, c)):pass這樣定義函數(shù)了

10)新式的8進(jìn)制字變量,相應(yīng)地修改了oct()函數(shù)。

11)增加了 2進(jìn)制字面量和bin()函數(shù)

12)擴(kuò)展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求兩點:rest是list 對象和seq是可迭代的。

13)新的super(),可以不再給super()傳參數(shù),

14)新的metaclass語法:

15)支持class decorator。

4. 字符串和字節(jié)串

1)現(xiàn)在字符串只有str一種類型,但它跟2.x版本的unicode幾乎一樣。

2)關(guān)于字節(jié)串,請參閱“數(shù)據(jù)類型”的第2條目

5.數(shù)據(jù)類型

1)Py3.X去除了long類型,現(xiàn)在只有一種整型——int,但它的行為就像2.X版本的long

2)新增了bytes類型

6.面向?qū)ο?/p>

1)引入抽象基類(Abstraact Base Classes,ABCs)。

2)容器類和迭代器類被ABCs化,所以cellections模塊里的類型比Py2.5多了很多。

3)迭代器的next()方法改名為__next__(),并增加內(nèi)置函數(shù)next(),用以調(diào)用迭代器的

4)增加了@abstractmethod和 @abstractproperty兩個 decorator,編寫抽象方法(屬性)更加方便。

7.異常

1)所以異常都從 BaseException繼承,并刪除了StardardError

2)去除了異常類的序列行為和.message屬性

3)用 raise Exception(args)代替 raise Exception, args語法

4)捕獲異常的語法改變,引入了as關(guān)鍵字來標(biāo)識異常實例

5)異常鏈,因為__context__在3.0a1版本中沒有實現(xiàn)

8.模塊變動1)移除了cPickle模塊,可以使用pickle模塊代替。最終我們將會有一個透明高效的模塊。

2)移除了imageop模塊

3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, imeWriter, mimify, popen2, rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模塊

4)移除了bsddb模塊(單獨發(fā)布,可以從Python "bindings" for Oracle Berkeley DB獲取)

5)移除了new模塊

6)os.tmpnam()和os.tmpfile()函數(shù)被移動到tmpfile模塊下

7)tokenize模塊現(xiàn)在使用bytes工作。主要的入口點不再是generate_tokens,而是 tokenize.tokenize()

9.其它 1)xrange() 改名為range(),要想使用range()獲得一個list,必須顯式調(diào)用

2)bytes對象不能hash,也不支持 b.lower()、b.strip()和b.split()方法

3)zip()、map()和filter()都返回迭代器。

4)string.letters和相關(guān)的.lowercase和.uppercase被去除,請改用string.ascii_letters 等

5)如果x< y的不能比較,拋出TypeError異常

6)__getslice__系列成員被廢棄。

7)file類被廢棄

img

在線咨詢

建站在線咨詢

img

微信咨詢

掃一掃添加
動力姐姐微信

img
img

TOP