29
After Coding package and distribute 13811日星期日

Tainan.py, Experience about package

  • Upload
    tim-hsu

  • View
    1.928

  • Download
    4

Embed Size (px)

DESCRIPTION

Happy to share my experience in tainan.py :)

Citation preview

Page 1: Tainan.py, Experience about package

After Codingpackage and distribute

13年8月11日星期日

Page 2: Tainan.py, Experience about package

TIM

• 3+ Year TrendMicro

• Have my own company now

13年8月11日星期日

Page 3: Tainan.py, Experience about package

寫完Code以後

• 聚會都在講寫 Code.

• Code 寫完,痛苦就開始了

13年8月11日星期日

Page 4: Tainan.py, Experience about package

Distribute

13年8月11日星期日

Page 5: Tainan.py, Experience about package

Distribute Flavor

• Windows/Mac

• self contained

• 好大⼀一包, Appliance

13年8月11日星期日

Page 6: Tainan.py, Experience about package

Distribute Flavor• linux based

• A Collection of self-contained unit

• Called Package

13年8月11日星期日

Page 7: Tainan.py, Experience about package

Pros

• Self Contained: Easy management for app

• Second, update is easier ( security fix )

13年8月11日星期日

Page 8: Tainan.py, Experience about package

Cons

• Appliance: update is hard

• Package: dependency hell

13年8月11日星期日

Page 9: Tainan.py, Experience about package

It depends

• Sublime in Mac uses systems’s python

• Dropbox always uses it’s own python

• It takes time....

13年8月11日星期日

Page 10: Tainan.py, Experience about package

Distribute Package

• System Package?

• Language Package?

13年8月11日星期日

Page 11: Tainan.py, Experience about package

RPM自行代換 deb

13年8月11日星期日

Page 12: Tainan.py, Experience about package

RPM 做了什麼事?

• 跟系統深度整合• /var /etc

• 升級套件, 智慧地保留備份 Config

• 有人幫你測⼀一整組 (也修過bug)

• 會用 YUM 的人很多

13年8月11日星期日

Page 13: Tainan.py, Experience about package

Cheese Shop

• pypi

• A Center for python package

• we install python package from Cheese Shop

13年8月11日星期日

Page 14: Tainan.py, Experience about package

我跟 Python 是好朋友

• sudo pip install django ?

• sudo pip install -r requirements.txt?

13年8月11日星期日

Page 15: Tainan.py, Experience about package

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日星期日

Page 16: Tainan.py, Experience about package

Caution

• Don’t install your programing language’s package into system’s

• Use YUM for system wide package

• Use virtual environment as developing

• avoid by:

• export PIP_REQUIRE_VIRTUALENV=true

13年8月11日星期日

Page 17: Tainan.py, Experience about package

After finish your code

• How To Package to python package

• Package To RPM via python package

13年8月11日星期日

Page 18: Tainan.py, Experience about package

13年8月11日星期日

Page 19: Tainan.py, Experience about package

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日星期日

Page 20: Tainan.py, Experience about package

13年8月11日星期日

Page 21: Tainan.py, Experience about package

setup.py

• 功能極多!

• 但是極好學• 範例 == 所有 Python 的套件數量

13年8月11日星期日

Page 22: Tainan.py, Experience about package

setup.py sample

• from distutils.core import setup

• setup( name=‘sample’, py_modules=[‘foo.py’],)

13年8月11日星期日

Page 23: Tainan.py, Experience about package

setup.py command

• python setup.py bdist_wininst

• # Create a wizard to install the package!

13年8月11日星期日

Page 24: Tainan.py, Experience about package

setup.py in realworld

• specify install_requires

• Read README.md

• execute git/hg to know version/tag info

13年8月11日星期日

Page 25: Tainan.py, Experience about package

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日星期日

Page 26: Tainan.py, Experience about package

Future

• Distutil2

• setup.cfg !!

13年8月11日星期日

Page 27: Tainan.py, Experience about package

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日星期日

Page 29: Tainan.py, Experience about package

Quick Guides

• Use setuptools and get easy_install

• Use PIP, use pip to install nearly everything

• Use Virtual Env to protect environment

• Buildout (with system dependency)

13年8月11日星期日