python egg安装包制作
经常接触Python的同学可能会注意到,当需要安装第三方python包时,可能会用到easy_install命令。easy_install是由PEAK(Python Enterprise
Application Kit)开发的setuptools包里带的一个命令,它用来安装egg包。egg包是目前最流行的python应用打包部署方式。如何制作和安装egg
包?下面我就简单的分析了一下。
1.1 安装setuptools
首先要安装setuptools工具。Debian/Ubuntu下可以直接使用apt安装::
$ sudo apt-get install python-setuptools
1.2 制作自己的egg包
接下来我们就自己制作一个简单的egg包。 首先建立工程目录myeggdemo,初始化一个setup.py文件:
$ mkdir myeggdemo
$ cd myeggdemo
$ touch setup.py
$ ls
setup.py
下面主要就是填充setup.py。setup.py其实是python工具包distutils的配置文件,setuptools就是基于distutils来做的。在setup.py中通过
setup函数来配置打包信息。首先要引入setuptools的函数setup。setuptools的setup其实就是distutils的setup函数,填写setup.py为以下内容
:setup函数接收一系列属性作为配置参数。
name name是egg包的名称,也是寻找要打包的文件夹的名称,默认是UNKNOWN。
version 版本号,默认0.0.0
packages 这里要用到setuptools的另一个函数find_packages,顾名思义,find_packages用来将指定目录下的文件打包。
zip_safe 默认是False,这样在每次生成egg包时都会检查项目文件的内容,确保无误。
还有一些描述性的属性,如description,long_description,author,author_email,license,keywords,platform,url等。填充setup.py文
件如下::
$ cat setup.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from setuptools import setup, find_packages
setup(
name = 'mydemo',
version = '0.1.0',
packages = find_packages('src'),
package_dir = {'':'src'},
description = "egg test mydemo",
long_description = "egg test demo.",
author = 'zhouguoqing',
author_email = 'zhouguoqing\@gmail.com',
license = 'GPL',
keywords = 'test api mydemo',
platforms = "Independant",
url = '',
)
在myeggdemo目录下建立和上述name名称相同的目录mydemo,mydemo目录下写__init__.py文件:
$ mkdir mydemo
$ > mydemo/__init__.py
空文件
$ vim mydemo/test.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def test():
print "i'm egg demo"
def hello():
print "Hello egg ok."
if __name__ == "__main__":
test()
hello()
再次生成egg包以后查看egg包信息:
$ python setup.py bdist_egg
可以看到,多了一个文件夹,先安装了体验一下再说:
$ sudo python setup.py install
running install
Copying ...
Processing mydemo-0.1.0-py2.7.egg
Copying mydemo-0.1.0-py2.7.egg to /usr/local/lib/python2.7/dist-packages
Adding mydemo 0.1.0 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/mydemo-0.1.0-py2.7.egg
Processing dependencies for mydemo==0.1.0
Finished processing dependencies for mydemo==0.1.0
OK!安装完毕!接下来我们就可以直接通过import来使用啦!
$python -c "from mydemo import test;test.test();test.hello()"
i'm egg demo
Hello egg ok.
egg文件卸载
以python2.7版本为例,egg文件一般安装在/usr/local/lib/python2.7/dist-packages/目录下,该目录下还有一个easy-install.pth文件,用于
存放安装的egg信息。:
$ cd /usr/local/lib/python2.7/dist-packages
$ cat easy-install.pth|grep mydemo
./mydemo-0.1.0-py2.7.egg
$ ls -F|grep mydemo
mydemo-0.1.0-py2.7.egg/
卸载egg文件很简单,首先将包含此egg的行从easy-install.pth中删除,然后删除egg文件夹即可。
vim easy-install.pth 删除 ./mydemo-0.1.0-py2.7.egg 行
sudo rm -rf mydemo-0.1.0-py2.7.egg
浙公网安备 33010602011771号