setup.py¶
刚刚学习 Python 时, 小白特别羡慕那些能够自己发布软件包的牛人们。小白多么希望自己也可以发布一个软件包呀。小白想让自己的程序也能通过:
python setup.py install
来安装模块。其他用户安装后,就可以直接使用小白的软件包了。 这个应该做呢?
paste¶
一个包里有许多文件,除了源代码,还包括setup.py文件等许多文件
一个包里可以通过模板来创建一个包,用paste!
安装¶
easy_install PasteScript
输出一大串后,安装成功!
创建一个包 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
paster create mala
然后一个一个填下来……
su@su:~/new$ paster create mala
Selected and implied templates:
PasteScript#basic_package A basic setuptools-enabled package
Variables:
egg: mala
package: mala
project: mala
Enter version (Version (like 0.1)) ['']:
Enter description (One-line description of the package) ['']:
Enter long_description (Multi-line description (in reST)) ['']:
Enter keywords (Space-separated keywords/tags) ['']:
Enter author (Author name) ['']:
Enter author_email (Author email) ['']:
Enter url (URL of homepage) ['']:
Enter license_name (License name) ['']:
Enter zip_safe (True/False: if the package can be distributed as a .zip file) [False]:
Creating template basic_package
Creating directory ./mala
Recursing into +package+
Creating ./mala/mala/
Copying __init__.py to ./mala/mala/__init__.py
Copying setup.cfg to ./mala/setup.cfg
Copying setup.py_tmpl to ./mala/setup.py
Running /usr/bin/python setup.py egg_info
好嘞,已经生成一个目录!
-mala
-mala/
-mala.egg-info/
-setup.cfg
-setup.py
再看看setup.py:
from setuptools import setup, find_packages
import sys, os
version = '0.1'
setup(name='mala',
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(),
include_package_data=True,
zip_safe=False,
install_requires=[
# -*- Extra requirements: -*-
],
],
},
)
其他都是空值,要讲的就是:
packages=find_packages()
自动查找目录下的包!
尝试安装¶
sudo python setup.py install
再进入python交互命令:
>>import mala
>>
好啊!成功了。再尝试:
>>mala.GUI()
哈哈!跳出窗口了!
添加系统命令¶
如何在终端中输入”mala”就可以跳出,而不用进入python交互命令行?
添加代码:
……
entry_points={
'console_scripts': [
'mala = mala:GUI',
],
……
再安装一下。
小结¶
小白今天用setuptool模块完成了安装功能!可以一键安装,快速调用,真是太棒了!