Python簡介和環境搭建
於 20世紀80年代末,Guido van Rossum發明了Python,初衷據說是為了打發聖誕節的無趣。1991年首次發布,是ABC語言的繼承,同時也是一種腳本語言。取名時,Guido van Rossum認為它應該“短小,獨特,還有一點神秘感”,他是英國著名劇團Monty Python的忠實粉絲,所以就取名Python了。
圖1 Monty Python劇團
牛人的世界我們無法企及,隨便玩玩就玩出門流行的語言來。
編程語言眾多,Python按照分類來講,首先是動態語言,無需編譯,然后是腳本語言。當然腳本語言這個特性在逐漸淡化,Python可以在Web、桌面、后台服務各種應用類型中占有一席之地。
Python從創建之后,到2000年發布了2.0版本,到2008年發布了3.0版本。到目前為止,2.版本仍然是使用最廣泛的版本,有一部分原因要歸咎於3.0版本對2.版本的不兼容。本系列教程會盡量使用最新的3.*版本來開發示例。
Python本身是開源的,我們可以從https://www.python.org/downloads/source/ 下載Python從2.0.1開始到當前最新版(3.7.0)各個版本的的源碼。(當然3.8已經問世!)
圖2 Python源碼下載
Python的跨平台特性,可以讓開發者放心的選擇自己喜歡的操作系統和開發工具來開發代碼。Python
不僅可以在Windows、Mac OS X、Linux/Unix運行,也可以運行在移動設備上,后面我們會有單獨的章節來具體介紹。
Python有很多值得我們稱道的特性,這里就先不展開介紹了,“絕知此事要躬行”,我們先搭建出開發環境來,實現我們的第一個“Hello world”。
1.1.1 安裝Python
我們可以到 https://www.python.org/downloads/windows/下載windows下的Phthon安裝文件,我們下載獨立的安裝文件進行安裝。
Python安裝文件下載(windows)
到https://www.python.org/downloads/mac-osx/下載Mac OS X的安裝文件,
Python安裝文件下載(Mac OS X)
到https://www.python.org/download/other/下載其他平台的安裝文件。
Python安裝文件下載(其他平台)
Linux 下安裝Python一般采用源碼或則軟件包管理器安裝的方式。 下面分別介紹在不同操作系統下Python的安裝方法。
1.1.1.1 Windows下安裝Python
我們從下載安裝文件之后,打開exe文件。
注意上圖中的標記的選項。通常我們會把Python安裝的系統的PATH系統變量中,這樣我們就可以在任何地方直接調用Python。當然也可以不安裝,需要到Python的安裝目錄里調用python.exe。
選擇自定義安裝。
這里注意pip一定要勾選上,這是默認的Python包管理工具,后面我們會繼續介紹。點擊下一步。
這里我們可以自定義安裝目錄,添加環境變量等選項。點擊安裝。
允許安裝。
安裝完成之后,如果提醒我們修改系統PATH最大字符數限制的話,點擊更改。
安裝成功后,關閉對話框。
現在我們可以進行簡單的測試了。如果你選擇了將Python安裝到PATH,直接命令行輸入Python啟動運行時,否則到Python的安裝目錄啟動python.exe。
輸入簡單的語句測試下。
到此為止,Python在widonws上的安裝完成了,下面我們看看在Mac OS X上如何安裝。
1.1.1.2 Mac OS X 安裝Python
目前Mac OS X 默認安裝Python2.7,我們下載最新的安裝包。
點擊繼續。
點擊“安裝”。
安裝成功之后,如果要求我們安裝SSL根證書的話,需要點擊鏈接跳轉到下載頁面下載安裝。其實,也可以直接通過pip來安裝。
在使用pip之前,我們先對pip進行更新。
pip3 install --upgrade pip
之后執行命令安裝certifi。
pip install certifi
下面我們來驗證新安裝的Python。
直接輸入python,使用的還是Python2.7.
默認的環境變量,我們不去動,這里使用python3來啟動。
1.1.1.3 Linux下 安裝Python
安裝python
在Linux下安裝Python,一般采用源碼安裝的方式。首先下載源碼。
$ sudo mkdir /usr/local/python3 # 創建安裝目錄
# 下載 Python 源文件
$ wget --no-check-certificate https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
# 注意:wget獲取https的時候要加上:--no-check-certificate
$ tar -xzvf Python-3.7.0.tgz # 解壓縮包
$ cd Python-3.7.0 # 進入解壓目錄
第二步是編譯安裝。
$ sudo ./configure --prefix=/usr/local/python3 # 指定創建的目錄
$ sudo make
$ sudo make install
第三步是配置鏈接。因為很多Linux系統自帶Python2.7,所以這里要配置一下軟連接,使得我們可以使用python3 命令來啟動Python3.7.
$ sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
如果使用 的是apt軟件包管理器的系統,可以直接使用如下命令來安裝:
apt-get install python3
安裝pip
可以使用命令直接安裝pip。
sudo yum install python-pip
或者
sudo apt-get install python-pip
簡單測試同上。
1.1.2 包管理
在實際開發過程中,不可能所有功能都基於Python原生API來進行開發,很多第三方軟件包為我們提供了很好的便利條件。安裝和管理軟件包分為手動和工具兩種方式,下面我們簡單介紹這兩種方式。軟件包管理工具為大家介紹pip和easy_install。
1.1.2.1 手動安裝
第一種方法是手動下載軟件包,運行安裝程序來安裝。
比如我們想要使用Python-nmap組件去解析nmap的掃描結果,我們先手動下載安裝包。
wget http://xael.org/pages/python-nmap-0.6.0.tar.gz
解壓:
root@kali:~# tar xzf python-nmap-0.6.0.tar.gz
root@kali:~# cd python-nmap-0.6.0/
root@kali:~/python-nmap-0.6.0# ls
root@kali:~/python-nmap-0.6.0#
安裝:
python setup.py install
1.1.2.2 pip
上面安裝Python的講解中已經講解了如何安裝pip。pip是Python安裝包默認的包管理工具,下面舉例說明基本用法。
通過 pip 來安裝github3模塊:
pip install github3.py
如果要安裝特定版本的package,通過使用==, >=, <=, >, <來指定一個版本號。例如:
pip install 'Markdown<2.0'
pip install 'Markdown>2.0,<2.0.3
我們也可以將所有的依賴放到一個requirement文件中,一次性安裝。例如新建內容如下的requirements.txt文件:
執行命令:
pip install -r requirements.txt
卸載軟件包,使用uninstall選項:
pip uninstall SomePackage
更新軟件包:
pip install --upgrade SomePackage
顯示已經安裝的文件:
pip show --files SomePackage
顯示過期的安裝包:
pip list --outdated
1.1.2.3 easy_intall
easy_install 是Python setuptools系列工具的中的一個工具,可以用來自動查找、下載、安裝、升級依賴包。
在Kali Linux中Python setuptools默認已經被安裝,其他Linux系統中使用apt-get或者yum都可以安裝。
apt-get 安裝命令為:
sudo apt-get install python-setuptools
yum 安裝命令為:
yum install setuptool
這里再介紹一個通用的方法,適合所有操作系統。首先下載ez_setup.py (https://bootstrap.pypa.io/ez_setup.py) 文件,然后執行下面的命令即可:
python ez_setup.py
下面我們使用easy_install 來安裝Python的一個模塊,可以用來對dpf進行解析和安全測試的pyPdf。
easy_install pyPdf
easy_install當然也提供了卸載模塊/包的功能。但是必須要注意的是,該模塊/包必須要在easy-install.pth 有相關信息,換句話說,也就是要使用easy_install安裝的,才可進行卸載。比如命令:
easy_install -m redis
這樣就會將redis模塊卸載。
1.1.3 virtualenv
virtualenv是可以用來創建獨立Python環境的工具, 來解決依賴、版本以及間接權限
問題. 比如一個應用依賴Python 2.7 而另一個應用依賴Python 3.0,或者一個項目依賴Django1.3 而當前全局開發環境為Django1.7, 版本跨度過大, 導致不兼容使項目無法正在運行, 使用virtualenv可以解決這些問題.基本原理為:
virtualenv創建一個擁有自己安裝目錄的環境, 這個環境不與其他虛擬環境共享庫, 能夠方便的管理python版本和管理python庫.
1) 安裝Virtualenv
sudo pip install virtualenv
2) 創建項目的虛擬環境
mkdir testvenv #名字隨便取
cd testvenv
virtualenv venv # venv 可替換為別的虛擬環境名稱
執行后,在本地會生成一個與虛擬環境同名的文件夾,包含 Python 可執行文件和 pip 庫的拷貝,可用於安裝其他包。但是默認情況下,虛擬環境中不會包含也無法使用系統環境的global site-packages。比如系統環境里安裝了 requests 模塊,在虛擬環境里 import requests 會提示 ImportError。如果想使用系統環境的第三方軟件包,可以在創建虛擬環境時使用參數–system-site-packages。
virtualenv --system-site-packages venv
另外,你還可以自己指定虛擬環境所使用的 Python 版本,但前提是系統中已經安裝了該版本:
virtualenv -p /usr/bin/python2.7 venv
3) 使用虛擬環境
進入虛擬環境目錄,啟動虛擬環境:
cd venv
source bin/activate # Windows 系統下運行 Scripts\
python -V
如果未對命令行進行個性化,此時命令行前面應該會多出一個括號,括號里為虛擬環境的名稱。啟動虛擬環境后安裝的所有模塊都會安裝到該虛擬環境目錄里。
退出虛擬環境:
deactivate
1.1.4 基於VS Code 搭建開發環境
可以用來開發Python的開發工具很多,選擇 Visual Studio Code是因為它輕量,開源,跨平台,方便我們在不同的操作系統上開發和調試代碼。
在 官方網站 https://code.visualstudio.com/#alt-downloads ,可以知道它提供的各種系統的安裝包。
windows 和 Mac下的安裝都很簡單,下面簡單介紹Linux下的安裝方法。
基於Debian/Ubuntu發行版的Linux,我們下載.deb安裝包,然后執行以下命令:
sudo dpkg -i <file>.deb
sudo apt-get install -f # Install dependencies
基於RHEL, Fedora 和 CentOS 發行版的Linux,下載.rpm安裝包進行安裝。
以64位安裝包為例,首先需要注冊更新yum倉庫。
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
執行安裝:
dnf check-update
sudo dnf install code
VS Code安裝好之后,打開工具,安裝擴展以支持Python開發。
打開擴展管理工具。
輸入“python”進行搜索。
選擇上圖中框選的擴展,點擊“安裝”按鈕。安裝完成后,點擊“重新加載”。
VS Code重啟之后,我們打開一個文件夾,新建一個test.py文件(使用菜單-->文件-->打開;資源管理器-->新建文件)。
新建 “*.py"文件后,在資源管理器左下角,可以切換Python的版本。
選擇合適的版本之后, VS Code會提醒我們安裝pylint,點擊安裝即可。我們來安裝pylint(Pylint 是一個 Python 代碼分析工具,它分析 Python 代碼中的錯誤,查找不符合編碼風格的代碼)。
下面我們回到test.py文件,隨便加幾行代碼。
import socket
print("hello\n")
print("world!")
切換到調試菜單,點擊”配置“按鈕。
編輯器會打開launch.json文件,點擊下方的添加配置。
選擇使用外部終端的Python調試器。
添加的 配置如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Terminal (external)",
"type": "python",
"request": "launch",
"program": "${file}",//當前激活的文件作為啟動項
"console": "terminal.external.osxExec" //啟用外部終端
}
]
}
保存配置之后我們切回test.py ,在代碼行數標識的左側單擊可以添加斷點,方便我們逐行或者逐過程調試代碼。
啟動調試可以直接點擊啟動按鈕,更多的啟動選項可以在調試菜單中看到。
下面我們直接啟動調試,程序首先會打開新的終端,然后會在我們的斷點處斷住。
如上圖是啟動調試,代碼運行到斷點處,左側是調試信息區域,這里我們可以看到變量和堆棧信息。右側4區域是調試控制按鈕,鼠標移上去會有功能提示。5區域是代碼區,此時我們可以增加和去掉斷點,查看變量。6區域是打開的終端,test.py的測試代碼接收用戶的輸入並打印,我們可以輸入任意內容回車查看結果。同時在編輯器下方的調試控制台也可以顯示輸出內容。
VS Code 編輯器的詳細使用細節這里我們就不展開了,后面教程中涉及到的應用點會單獨補充。建議讀者盡可能全面的閱讀官方文檔(https://code.visualstudio.com/docs)。