鋼の鍊魔術師

嵌入 FreeBSD 的心,修的是魔道還是正道?

Fork me on GitHub

使用 Pip 與 Easy_install 共同來安裝 Python Package

根據使徒提姆這篇文章提到的 pyinstall(已改名為 pip),我開始使用 pip 來安裝 python package。

之前使用的 easy_install 我也只會這三種應用:

1
2
3
#easy_install Django #安裝 Django
#easy_install -U Django #升級 Django
#easy_install -m Django #移除 Django (只是從 easy-install.pth 拿掉而已,要自行清理 site-packages 裡面的目錄或檔案)

那麼 pip 的使用方式呢?請拜讀官方文件,尤其是一些特點、與 easy_install 相異的地方:P
我自己覺得比較酷的地方在於:

  • 所有套件都是由 source 開始編譯(FreeBSD ports like)
  • 所有相依套件都先下載回來再統一安裝,不會發生相依套件裝完了然後主要套件裝不起來 Orz…
  • 使用 bundle 可以將所有相依套件都封存在一個 bundle 內
  • 告訴你某個 package 為何會安裝(就像 freebsd 的 ports 有記錄這是某某套件的相依套件)
  • 支援 python 虛擬環境

不過,由於 pip 還在開發中,基於有些 package 的 setup.py 寫法限制,還是得用 easy_install 來安裝,要不然純用 pip 是安裝不起來的 Orz…

直接在 freebsd 全部使用 pip 來安裝套件(注意以下有先搬移 site-packages 目錄),範例:安裝 pylons
(前提:如果你沒有其他 python 套件是要使用 ports 安裝的話;請先不要用在 production!)

1
2
3
4
5
6
# mv /usr/local/lib/python2.5/site-packages /usr/local/lib/python2.5/site-packages.bak
# mkdir -p /usr/local/lib/python2.5/site-packages
# cd /var/db/pkg; portupgrade -f py25-setuptools-0.6c9
# easy_install pip
# pip bundle pylons.pybundle pylons #所有pylons 及其套件都在 pylons.pybundle 這個 file 裡,應可搬去其他地方使用
# pip install pylons.pybundle #安裝 pylons.pybundle,開始 unpack 所有 pylons.pybundle 裡的東西

當然如果不需打包,則直接 pip install pylons 即可。

Comments