Tainan.py, Experience about package

2,282 views

Published on

Happy to share my experience in tainan.py :)

Published in: Technology
4 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total views
2,282
On SlideShare
0
From Embeds
0
Number of Embeds
607
Actions
Shares
0
Downloads
4
Comments
4
Likes
5
Embeds 0
No embeds

No notes for slide

Tainan.py, Experience about package

  1. 1. After Coding package and distribute 13年8月11日星期日
  2. 2. TIM • 3+Year TrendMicro • Have my own company now 13年8月11日星期日
  3. 3. 寫完Code以後 • 聚會都在講寫 Code. • Code 寫完,痛苦就開始了 13年8月11日星期日
  4. 4. Distribute 13年8月11日星期日
  5. 5. Distribute Flavor • Windows/Mac • self contained • 好大⼀一包,Appliance 13年8月11日星期日
  6. 6. Distribute Flavor • linux based • A Collection of self-contained unit • Called Package 13年8月11日星期日
  7. 7. Pros • Self Contained: Easy management for app • Second, update is easier ( security fix ) 13年8月11日星期日
  8. 8. Cons • Appliance: update is hard • Package: dependency hell 13年8月11日星期日
  9. 9. It depends • Sublime in Mac uses systems’s python • Dropbox always uses it’s own python • It takes time.... 13年8月11日星期日
  10. 10. Distribute Package • System Package? • Language Package? 13年8月11日星期日
  11. 11. RPM 自行代換 deb 13年8月11日星期日
  12. 12. RPM 做了什麼事? • 跟系統深度整合 • /var /etc • 升級套件, 智慧地保留備份 Config • 有人幫你測⼀一整組 (也修過bug) • 會用YUM 的人很多 13年8月11日星期日
  13. 13. Cheese Shop • pypi • A Center for python package • we install python package from Cheese Shop 13年8月11日星期日
  14. 14. 我跟 Python 是好朋友 • sudo pip install django ? • sudo pip install -r requirements.txt? 13年8月11日星期日
  15. 15. Don’t use sudo pip • django 1.5 requires more setting or you cannot runserver • You may broken a lot of service such as review board 13年8月11日星期日
  16. 16. Caution • Don’t install your programing language’s package into system’s • UseYUM for system wide package • Use virtual environment as developing • avoid by: • export PIP_REQUIRE_VIRTUALENV=true 13年8月11日星期日
  17. 17. After finish your code • How To Package to python package • Package To RPM via python package 13年8月11日星期日
  18. 18. 13年8月11日星期日
  19. 19. The confusing history • distutils in stdlib is the core of package • setuptools is an enhancement of distutils • Distribute is a fork from setuptools • Distribute is merged to setuptools o_O • distutil is too basic and risky to refactor • distutil2 is delayed. 13年8月11日星期日
  20. 20. 13年8月11日星期日
  21. 21. setup.py • 功能極多! • 但是極好學 • 範例 == 所有 Python 的套件數量 13年8月11日星期日
  22. 22. setup.py sample • from distutils.core import setup • setup( name=‘sample’, py_modules=[‘foo.py’], ) 13年8月11日星期日
  23. 23. setup.py command • python setup.py bdist_wininst • # Create a wizard to install the package! 13年8月11日星期日
  24. 24. setup.py in realworld • specify install_requires • Read README.md • execute git/hg to know version/tag info 13年8月11日星期日
  25. 25. how to create RPM? • python setup.py bdist_rpm • Or Find Linux Distribution’s guide and Repo. don’t search “python rpm/deb • Don’t write SPEC file directly. 13年8月11日星期日
  26. 26. Future • Distutil2 • setup.cfg !! 13年8月11日星期日
  27. 27. some useful tips • entrypoint::console_script • python setup develop • python setup sdist • pip install -r requirements.txt • pip freeze -r base.txt > dev_req.txt • pip install -e <your local repo> 13年8月11日星期日
  28. 28. Reference • http://aosabook.org/en/packaging.html • http://wokslog.wordpress.com/2011/06/04/ distutils-diff/ • http://ziade.org/2010/02/18/python- language-summit-summary-of-the- packaging-track/ 13年8月11日星期日
  29. 29. Quick Guides • Use setuptools and get easy_install • Use PIP, use pip to install nearly everything • UseVirtual Env to protect environment • Buildout (with system dependency) 13年8月11日星期日

×