python打包egg,.egg安装
经常接触python的学生可能会注意到,当需要安装第三方Python包时,可能会使用easy_install命令。Easy_install是Peak (Python企业应用工具包)开发的setuptools包中包含的一个命令,用来安装egg包。Egg包是目前最流行的python应用打包部署方式。
鸡蛋包怎么制作和安装?下面简单分析一下。
1.1 安装setuptools
首先安装setuptools工具。在Debian/Ubuntu下,可以直接用apt安装:
$ sudo apt-get install Python-setup tools是手动安装的,有两种方式:
通过bootloader ez_setup.py安装这个引导程序会在线下载最新版本的setuptools进行安装,也可以更新本地的setuptools。
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py更新setuptools:
$ sudo python ez _ setup . py-u setup tools或者下载安装工具的egg包来安装。你可以在这里下载最新版本。下载后,通过sh安装。
$ wget http://pypi . python . org/packages/2.6/s/setup tools/setup tools-0.6c 11-py 2.6 . egg
$ sudosh安装工具-0.6c11-py2.6.egg现在可以使用easy_install命令安装其他egg包了。
1.2 制作自己的egg包
总是装别人的蛋包。你想自己做鸡蛋包吗?好,那我们自己做个简单的鸡蛋包。首先,建立项目目录egg-demo,并初始化setup.py文件:
$ mkdir彩蛋-演示
$ cd彩蛋-演示
$ touch setup.py
$ ls
setup.py下面的部分主要是填充setup.py.Setup.py实际上是python工具包distutils的配置文件,setuptools基于distutils。通过setup.py中的设置功能配置打包信息首先要介绍一下setuptools的功能设置。工具的设置实际上是distutils的设置功能。按如下方式填写setup.py:
$ cat setup.py
#!/usr/bin/env python
#-*-编码:utf-8 -*-
从setuptools导入设置
这里写Setup(),写一个空蛋配置文件。我们可以使用下面的命令来生成鸡蛋包:
$ python setup.py bdist_egg我们来看看到底生成了什么:
$ ls -F
build/dist/setup . py unknown . egg-info/可以看到多了三个文件夹。并且在dist文件夹下,有一个鸡蛋文件:unknown-0.0.0-py2.6.egg .产卵成功!我们来看看这个egg文件是什么格式的:
$ file dist/UNKNOWN-0 . 0 . 0-py 2.6 . egg
dist/unknown-0 . 0 . 0-py 2.6 . egg : zip存档数据,atlast v2.0提取哦,是zip压缩包!好了,我们再来看看内部结构:
$ unzip-l dist/UNKNOWN-0 . 0 . 0-py 2.6 . egg
归档: dist/KNOWN-0 . 0 . 0-py 2.6 . egg
长度日期时间名称
- - - -
120 2010-12-06 17:04 EGG-INFO/sources . txt
1 2010-12-06 17:04 EGG-INFO/top_level.txt
1 2010-12-06 17:04 EGG-INFO/zip-safe
1 2010-12-06 17:04 EGG-INFO/dependency_links.txt
227 2010-12-06 17:04 EGG-INFO/PKG-INFO
--------- -------
350 5 files只有一个EGG-INFO文件夹,内含五个egg信息文件,没了。 这个egg名称未知,版本0.0.0。这是因为我们在setup里什么也没有设置。 显然,这个egg什么也不能做。 下面给它加点料。 在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在egg-demo目录下建立和上述name名称相同的目录demo,demo目录下写__init__.py文件:#!/usr/bin/env python
#-*- coding:utf-8 -*-
from setuptools import setup, find_packages
setup(
name = "demo",
version="0.1.0",
packages = find_packages(),
zip_safe = False,
description = "egg test demo.",
long_description = "egg test demo, haha.",
author = "amoblin",
author_email = "amoblin@ossxp.com",
license = "GPL",
keywords = ("test", "egg"),
platforms = "Independant",
url = "",
)
$ mkdir demo再次生成egg包以后查看egg包信息:$ cat demo/__init__.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def test():
print "Hello, I'm amoblin."
if __name__ == '__main__':
test()
$ python setup.py bdist_egg可以看到,多了一个文件夹demo,里面有我们写的__init__.py。 奉行敏捷原则,先安装了体验一下再说:$ unzip -l dist/demo-0.1.0-py2.6.egg
Archive: dist/demo-0.1.0-py2.6.egg
Length Date Time Name
--------- ---------- ----- ----
121 2010-12-06 17:30 demo/__init__.py
344 2010-12-06 17:46 demo/__init__.pyc
137 2010-12-06 17:46 EGG-INFO/SOURCES.txt
5 2010-12-06 17:46 EGG-INFO/top_level.txt
1 2010-12-06 17:46 EGG-INFO/zip-safe
1 2010-12-06 17:46 EGG-INFO/dependency_links.txt
227 2010-12-06 17:46 EGG-INFO/PKG-INFO
--------- -------
836 7 files
$ sudo python setup.py installOK!安装完毕!接下来我们就可以直接通过import来使用啦!running install
install_dir /usr/local/lib/python2.6/dist-packages/
...
creating /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg
Extracting demo-0.1.0-py2.6.egg to /usr/local/lib/python2.6/dist-packages
demo 0.1.0 is already the active version in easy-install.pth
Installed /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg
Processing dependencies for demo==0.1.0
Finished processing dependencies for demo==0.1.0
$ python -c "from demo import test;test()"成功输出!这说明安装正确。我们的一个egg包诞生了。 一般情况下,我们的源程序都放在src目录下,所以接下来将demo文件夹移动到src里。但这样也要修改setup.py文件,修改find_packages函数中参数为'src',同时增加package_dir参数:Hello, I'm amoblin.
packages=find_packages('src'),这样告诉setuptools在src目录下找包,而不是原来默认的工程根目录。package_dir = {'':'src'}
1.3 egg文件卸载
以python2.6版本为例,egg文件一般安装在/usr/local/lib/python2.6/dist-packages/目录下,该目录下还有一个easy-install.pth文件,用于存放安装的egg信息。:
$ cd /usr/local/lib/python2.6/dist-packages卸载egg文件很简单,首先将包含此egg的行从easy-install.pth中删除,然后删除egg文件夹即可。$ cat easy-install.pthgrep demo
./demo-0.1.0-py2.6.egg
$ ls -Fgrep demo
demo-0.1.0-py2.6.egg/
相关推荐:《Python教程》以上就是python egg怎么安装的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。