Sharing

2013年6月13日 星期四

Problem: How to manage python package from apt-get?

目前 pip&distibute 解決了大部份  python package 的 installation 時遇到的 dependency 問題.
http://pythonhosted.org/distribute/
http://guide.python-distribute.org/


但如果遇到和外界的 c library 有 dependency 時, ex: pyzmq --> libzmq3  或是 pymysqldb --> libmysqlclient, 就無法在 python 的世界裡解決了, 必須要跳脫出來. 我想這也是為什麼 Ubuntu 在 python package 之外經常要再包一層看似沒做什麼事情的 .deb 檔.  ex: python-zmq, python-crypto, 透過 .deb 檔可以讓 python package 和其它 c library 建立起關係. 並且有時候可以做更多的事情, 比方說在 /etc/ 下建立 .conf 檔案, 在 /etc/init.d/ 下建立這樣一來 python package 和 OS 的關係


但問題又來了,  precise 內建的 python-crypto 是 2.4 版, 如果我要裝 2.6 版要怎麼做?

$ pip install pycrypto==2.6 
$ dpkg -l | grep python-crypto
ii  python-crypto                                       2.4.1-1ubuntu0.1                                    cryptographic algorithms and protocols for Python
$ pip freeze | grep pycrypto
pycrypto==2.6

用 pip 直接安裝是最快速的方式, 但會讓 apt/dpkg 內的資訊不一致, 這在 management 以及 deployment 有時會造成麻煩
目前還沒有找到直接的解法, 先紀錄下來, 未來有找到解法時再更新

相關 material:

http://www.g-loaded.eu/2008/01/28/how-to-extract-rpm-or-deb-packages/

http://www.pyinstaller.org/

http://stackoverflow.com/questions/4700178/should-i-bundle-c-libraries-with-my-python-application

http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html

http://developer.ubuntu.com/packaging/html/
http://developer.ubuntu.com/packaging/html/python-packaging.html
http://askubuntu.com/questions/90764/how-do-i-create-a-deb-package-for-a-single-python-script
https://wiki.ubuntu.com/PackagingGuideDeprecated/Python









沒有留言: