ผมลองสร้าง .egg ของ helloworld โดยสั่ง
python setup.py bdist_egg
จะำได้ไข่ helloworld-0.1dev-py2.4.egg ออกมา 1 ฟอง ครับ
ต่อไปลองสั่ง
easy_install helloworld-0.1dev-py2.4.egg
ก็จะมีการนำไข่ไปฟักไว้ยังที่เก็บ module ต่างๆ ของ python ตามนี้
/usr/lib/python2.4/site-packages/helloworld-0.1dev-py2.4.egg
แสดงว่าผมก็จะได้แค่ module ที่พร้อมใช้งานใช่มั้ยครับ
แล้วถ้าผมต้องการใ้ห้ได้เป็นโปรแกรม ที่อยู่ใน /bin หรือ /usr/bin ล่ะครับ
ผมควรสร้าง Dist ของโปรแกรมอย่างไรดีครับ
เพิ่งเริ่ม def งานด้วย python ไม่นานครับ
ไม่รู้ผมถามให้งง กันหรือว่าอย่างไร
ไปเจอ กระทู้นี้มา
http://www.codenone.com/node/838
และตามไปอ่านต่อที่ http://peak.telecommunity.com/DevCenter/setuptools#automatic-script-creation ตามคำแนะนำ
ก็ได้เข้าใจว่า เขียน setup.py ง่ายๆ แค่กำหนดค่า 'console_scripts' ไว้เท่านั้นเอง ก็จะได้ command line ของ app ของเราเองแล้ว
เช่น mypackage ของผม
find .
./mypackage
./mypackage/hello.py
./mypackage/init.py
./mypackage/mypackage.py
./mypackage.egg-info
./mypackage.egg-info/dependency_links.txt
./mypackage.egg-info/entry_points.txt
./mypackage.egg-info/not-zip-safe
./mypackage.egg-info/PKG-INFO
./mypackage.egg-info/top_level.txt
./mypackage.egg-info/SOURCES.txt
./setup.cfg
./setup.py
File:./mypackage/hello.py
!/usr/bin/env python2.6
def say_func():
print "hello Test"
File:./mypackage/mypackage.py
!/usr/bin/env python2.6
def main_func():
print "run in main function:"
File:./setup.py
from setuptools import setup, find_packages
import sys, os
version = '0.0'
setup(name='mypackage',
version=version,
description="",
long_description="""\
""",
classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
keywords='',
author='',
author_email='',
url='',
license='',
packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
include_package_data=True,
zip_safe=False,
install_requires=[
# -- Extra requirements: --
],
entry_points={
'console_scripts':[
'mypack = mypackage.mypackage:main_func',
'myhello= mypackage.hello:say_func',
]
},
)
เวลาสั่ง install ก็จะเห็นแบบนี้
...
Installing myhello script to /usr/local/bin
Installing mypack script to /usr/local/bin
...
นั้นคือเราจะได้ โปรแกรม myhello, mypack พร้อมสั่งรันได้เลย ^__^