這裡試著簡述如何在*nix下使用 easy_install & virtualenv & pyinstall 來打包工作環境:
*請務必非常小心地對待自己設的 PYTHONPATH 變數,及 .pydistutils.cfg 檔。
首先 easy_install virtualenv (若你還沒這樣做)。目前 virtualenv 最新為 1.3,若非此版,可下 easy_install -U virtualenv 更新。
到要放新環境的資料夾 (此例為 ~/projects),下 virtualenv (給環境一個名稱,此例為 env)cd ~/projects
virtualenv --no-site-packages env
此時什麼 .pydistutils.cfg 或 PYTHONPATH 等都得清乾淨,若你兩者都沒設就不必管它。cd ~/projects/env
source bin/activate
easy_install pyinstall
pyinstall.py (...pylons, django ...所有你想要加入新環境的eggs,用法與easy_install類似)
基本上到這就是一般 virtualenv 的用法,只是改用 pyinstall 置換 easy_install。
再來打包整個環境:pyinstall.py --freeze=env.req (看一下產出的 env.req 跟妳想像中需要裝到的eggs是不是一樣)
pyinstall.py --bundle env.pybundle -r env.req
^^^ 為什麼不是 pyinstall?真的很執著…
大功告成。到下一台要佈署的主機上,一樣做 virtualenv env (然後一樣清乾淨PYTHONPATH等變數)cd env
easy_install pyinstall
把剛剛的 env.pybundle 複製過來,下pyinstall.py env.pybundle
即可看到這一連串的咒語所施展的魔法。enjoy
Updated: env.bundle 會被 pyinstall 誤認為要下載的 egg,得以 .pybundle 才會被認得。
參考資料:
- virtualenv --help
- pyinstall.py --help
- Python Package Index : pyinstall
- pyinstall: A New Hope
Beaker==1.0.2
FormEncode==1.0.1
Genshi==0.5.1
Mako==0.2.2
Paste==1.7.1
PasteDeploy==1.3.2
PasteScript==1.6.3
Pygments==0.11.1
Pylons==0.9.7rc2
Routes==1.10.1
SQLAlchemy==0.5.0rc1
Tempita==0.2
WebError==0.9
WebHelpers==0.6.1
WebOb==0.9.3
decorator==2.3.1
nose==0.10.3
simplejson==2.0.1
wsgiref==0.1.2
*魔蛋圖片為: Tsja! 之 《Heavenly egg》







