python相關工具

1.   目前在 Windows 下除了官方提供的安裝版外,還有:

ActivePython ,這個與官方版本的區別在於提供了額外的庫和文檔,並且自動設置了PATH環境變量(後文會詳細提到)

Python(x,y),這個是我一直用並且推薦給別人用的版本。從名字就能看出來這個發行版附帶了科學計算方面的很多常用庫,另外還有大量常用庫比如用於桌面軟件界面製作的 PyQt, 還有文檔處理,exe文件生成等常用庫。另外的還有大量的工具如IDE,製圖製表工具,加強的互動shell之類。很多下文提到的軟件在此發行版中都有附帶。其他方面,Python(x, y)還附帶了手工整理出的所有庫的離線文檔,每個小版本升級都提供單獨的補丁。總的來說是很用心維護的一個發行版,十分建議安裝這個版本

2.   pip 管理第三方庫

Python 的一大優勢就是有極爲大量的第三方庫,包括各個方面的引用。然而安裝第三方庫對沒有掌握方法的同學來說會變得很讓人煩惱。事實上 Python 第三方庫的安裝和管理有着一個一個唯一正確的做法,這個做法要求你什麼其他的都不用幹,只要輸入你要安裝庫的名字就可以了。

setuptools 也包在 Python(x, y) 當中。如果沒有的話,要首先先安裝 setuptools(python3後更名爲distribute) ,這個其實就是一個安裝第三方庫的軟件。選擇對應版本的 Windows Installer 進行下載和安裝後,打開一個命令行窗口,輸入:

easy_install pip

如果提示找不到程序,那麼說明你當前沒有設定好環境變量。安裝官方提供的 Python 安裝包的話肯定會有這個問題,而且很可能暫時不會修正,這就是牛逼程序員的倔強。具體做法是 右鍵我的電腦 – 屬性 – 高級系統設置 – 環境變量 – 將 C:\python2*\Scripts 加入到 PATH 那一組當中。這樣做的效果就是在任何地方的命令行下輸入命令,那麼系統會額外查找我們設定的那個目錄中的內容。之後再執行上面的命令,裝好了以後我們就要棄用 setuptools,轉投 pip。要安裝任何一個庫,你只要找到他的名字(不需要版本號),用 pip 安裝即可。譬如安裝 django,那麼輸入如下命令即可:

pip install django

其實之前 easy_installpip 效用是類似的,都是在官方的第三方庫索引 PyPI 查詢信息並進行下載和安裝。pip 的優勢在於支持更高級的功能,譬如虛擬環境,安裝失敗不會殘留破損的庫,更重要的是 pip 還可以進行卸載。輸入下面命令就能卸載一個之前由 pip 進行安裝的庫。繼續上面的例子,現在要卸載 django:

pip uninstall django

這是 setuptools 所缺失的功能。需要額外說明的是大部分純 Python 的庫都能用這個方法在 Windows 下裝上,但是需要編譯 C 語言模塊的一般都不太可能成功。遇到這種情況,在相應的庫德站點上找找有沒有對應的 Windows 安裝包。

3. 用 virtualenv 構建虛擬 Python 環境

如果你使用過 Python 做過 Web 開發,或者你有需求在本機上安裝多個版本的 Python 來測試你的代碼能否跑再 2.5, 2.6, 2.7 各個版本上,或者你的不同項目依賴於一個第三方庫的不同版本;再或者,有時候你就是想要一個沒有之前安裝過的亂七八糟的庫,一個乾淨的 Python 環境。這種時候 virtualenv 就能幫上你的忙。它能利用安裝好的 Python ,在同一臺機器上建立一個或多個互不相干的虛擬 Python 環境,且能隨時切換。如果你看到這裏還不覺得這個有什麼用處,那不妨看下去留下點印象,等哪天你有這類需求的時候能找到這個簡單實用的工具。

和其他第三方庫一樣,我們可以通過 pip 輕鬆安裝:

pip install virtualenv

安裝完成後你可以開啓一個命令行窗口,輸入 virtualenv 看看能不能找到這個腳本。如果有問題的話,請按照上面介紹過的步驟檢查下是否設置好了 PATH。之後我們可以在一個方便的地方建立一個虛擬環境。建立 C:\envs\ 文件夾,命令行下 cd 到該文件夾中,輸入:

virtualenv --no-site-packages --python=C:\Python26\python.exe envtest

之後應該會看到一個叫 envtest 的文件夾。這就是一個新建立的虛擬環境(virtual enviroment)。我們不妨先激活它來看看應該怎麼用。命令行下執行 envtest\Scripts\activate.bat,這時是你會發現命令行變成這個樣子:

(envtest) c:\>

提示符前面的 (envtest) 就是該環境已被激活的標誌。這樣你就可以在這個虛擬環境下進行工作了。執行 pip freeze ,你會發現… 你會發現什麼都沒有啊。執行 pip help,你可以看到 pip freeze 是輸出當前 Python 環境下已經安裝的所有第三方庫。因爲我們創建此環境時開啓了選項 --no-site-packages,意思就是在創建此虛擬環境中不從系統 Python 中把已經安裝了的庫也安裝到這裏來,所以這裏是一個乾淨的新 Python 環境。你可以在這裏調用 pip 或者 easy_install 來安裝各種你需要的庫到這個環境中來,而不會影響到你係統中 Python 的情況,所以說它是一個虛擬的 Python 環境。

我們再回頭看下 envtest 目錄的結構,其下面的 Scripts 目錄中有 python.exe pip.exe 這些程序,在虛擬環境已激活的情況下,你調用 python 或者 pip 都是調用的此目錄中的程序。此時系統中的 python.exe 被 virtualenv 通過設置環境變量隱藏了起來。而 Lib 目錄下就是存放各種新安裝的庫。

到這裏你應該已經對 virtualenv 基本操作已經瞭解了,下面講些使用上的注意事項:

  • 調用 activate.bat 開啓虛擬環境,你也可以用同目錄下的 deactivate.bat 來退出該虛擬環境。
  • 建立虛擬環境時的參數 --python=C:\Python26\python.exe 是用來指定你想使用 Python 程序位置,所以你可以建立多個虛擬環境來指向多個 Python 版本。另外你要注意的是如果你在系統上安裝了多個版本的 Python, 你最先安裝的一個版本會被當做主要版本,你在命令行下打 python 時,調用的就是最先安裝的一個版本。其實這個是按照 PATH 中設定的路徑位置來確定的,你最好把你需要主要使用的版本相關路徑放在 PATH 環境變量中最前面。比如我的機器上,就是把 C:\Python26C:\Python26\Scripts 作爲 PATH 最前面兩個。這樣應該就能讓保證你主要版本的正常使用。
  • 當你在一個虛擬環境下工作時,假如你想在當前環境下來執行一個 Python 程序,這時你在命令行下必須執行 python foo.py ,這樣 foo.py 纔會在你當前已經激活的 virtualenv 下執行。作爲比較如果你直接執行 foo.py 那麼它仍然時在系統環境下執行的

另外,Linux 下可以使用 virtualenvwrapper 來進行方便的管理和切換各個環境,可惜的是這東西在 Windows 下用不了。但幸好有一個簡單的腳本 envdotpy 來幫助你使用。把 env.py 放到 PATH 上的目錄內,譬如 C:\Python26\Scripts 下。之後先打開裏面的 DEFAULT_DIR_PATH 變量,把它改成你集中存放 virtualenv 的地方,在我們上面的例子中就可以把這行改爲:

DEFAULT_DIR_PATH = "C:\\envs\\"

之後你就不需要專門 cd 到這個目錄,而可以在任意路徑上通過 env.py 來進行激活,切換,退出 virtualenv 了。例如執行: env.py envtest 就能激活 envtest 。執行 env.py -q 就能退出任意一個 virtualenv。

4. 避免,和解決編碼產生的問題

雖說確定 String 的編碼格式是程序員的責任,但有時候你真的不知道有些字串符到底是什麼編碼的。這裏有一個神奇 chardet 能夠幫助你。以下是摘自其頁面上的例子,很好了說明了它的作用:讀入任意一串字符,猜測其編碼格式,並且給出猜測的確信度。

>>> import urllib
>>> urlread = lambda url: urllib.urlopen(url).read()
>>> import chardet
>>> chardet.detect(urlread("http://google.cn/"))
{'encoding': 'GB2312', 'confidence': 0.99}

>>> chardet.detect(urlread("http://yahoo.co.jp/"))
{'encoding': 'EUC-JP', 'confidence': 0.99}

>>> chardet.detect(urlread("http://amazon.co.jp/"))
{'encoding': 'SHIFT_JIS', 'confidence': 1}

>>> chardet.detect(urlread("http://pravda.ru/"))
{'encoding': 'windows-1251', 'confidence': 0.9355}

如果 confidence 非常低的話或者 chardet 直接報錯,多半是字串經過多次錯誤編碼解碼,要從別的地方找辦法解決問題。

5. Vim Python開發 相關資源

事實上我現在自己是在用 Vim 寫 Python,感覺也蠻不錯。以下是相關資源。

  1. UltimateVimPythonSetup 比較新的一個專門針對 Python 的 Vim 配置文件。
  2. Vim as Python IDE 只要搜 Python 和 Vim 就一定會找到這一篇文章。
  3. vimcolorschemetest 所有的Vim 配色方案都在集結在這裏。
  4. Python 相關 Vim 插件
    pythoncomplete.vim 按上面的介紹配置一下,在自動輸入的時候按Ctrl-X, Ctrl-O就有很強力的自動補全了。
    python.vim 加強語法的高亮。
    pyflakes.vim 很棒的語法檢查,分析你的語法看避免低級錯誤。注意這個在Vim7.2下才有用, 如果是7.1則一點效果都沒有…
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章