python打包egg,.egg安装

  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

  #!/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 = "",

   )

在egg-demo目录下建立和上述name名称相同的目录demo,demo目录下写__init__.py文件:

  

$ mkdir demo

  $ cat demo/__init__.py

  #!/usr/bin/env python

  #-*- coding:utf-8 -*-

  def test():

   print "Hello, I'm amoblin."

  if __name__ == '__main__':

   test()

再次生成egg包以后查看egg包信息:

  

$ python setup.py bdist_egg

  $ 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

可以看到,多了一个文件夹demo,里面有我们写的__init__.py。 奉行敏捷原则,先安装了体验一下再说:

  

$ sudo python setup.py install

  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

OK!安装完毕!接下来我们就可以直接通过import来使用啦!

  

$ python -c "from demo import test;test()"

  Hello, I'm amoblin.

成功输出!这说明安装正确。我们的一个egg包诞生了。 一般情况下,我们的源程序都放在src目录下,所以接下来将demo文件夹移动到src里。但这样也要修改setup.py文件,修改find_packages函数中参数为'src',同时增加package_dir参数:

  

packages=find_packages('src'),

  package_dir = {'':'src'}

这样告诉setuptools在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

  $ cat easy-install.pthgrep demo

  ./demo-0.1.0-py2.6.egg

  $ ls -Fgrep demo

  demo-0.1.0-py2.6.egg/

卸载egg文件很简单,首先将包含此egg的行从easy-install.pth中删除,然后删除egg文件夹即可。

  相关推荐:《Python教程》以上就是python egg怎么安装的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: