2018年4月23日 星期一

研究 | Python 簡介

Python 有兩個版本
1. 2.x (2.7 是最後一版,預計維護到 2020 年)
2. 3.x (此文發佈時最新版本 3.6.5)

注意:Python 3.x 並不向下相容,因此 Python 2.x 的 code 用 Python 3.x 執行可能會有問題。

Python document

1. Python 2.x
2. Python 3.x

Python 套件格式 (packaging format)

1. Eggs  (副檔名 .egg)
2. wheel (副檔名 .whl)

Python 套件管理 (package manager)

1. distutils: 安裝與發佈 Python 套件
   使用 distutils 寫 setup.py 來發佈 Python 套件
   如何寫 setup.py
   setup.py 範例

2. setuptools: 下載、建構、安裝和管理 Python 套件
   使用指令 easy_install

注意:setuptools 不支援反安裝 Python 套件,有看到對支援反安裝套件的討論,但似乎並沒有一個很好的方式可以做到。

3. pip

Python 虛擬環境 (virtual environment)

當一個 linux distribution 預設使用 Python 2.x 時,想要升級 Python 3.x 是挺麻煩的,因為很多基本的系統指令都基於 Python 2.x,不能輕易將 Python 2.x 移除,移除的話連最基本的指令都無法運行。

此時虛擬環境就派上用場,在一個系統上(system-wide)安裝多個版本的 Python 並切換使用,例如 pyenv。再進一步還可以將一個目錄(folder-wide)模擬成一個虛擬環境,例如 virtualenv。

1. pyenv
   a. based on bash
   b. system-wide or user-wide

2. virtualenv
   a. based on Python
   b. folder-wide
   
3. virtualenvwrapper
   a. 是 virtualenv 的 extension
         
4. venv 
   a. Python 3.3 開始支援
   b. in Python Standard Library

Python 懶人包 (含 Python 與很多套件)

1. Anaconda
2. Enghought Canopy

名詞與縮寫
CPython: 用 C 實現 Python

PyPy: 用 Python 實現 Python


RPython: Python 的一個子集


PyPI: the Python Package Index
      第三方軟體庫 (third-party software repository)
  
PyPa: Python Packaging Authority
      維護套件管理專案的群組, github
     
PEP: Python Enhancement Proposals

PSF: Python Software Foundation