$ mkdir egg-demo

$ cd egg-demo

$ 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为以下内容:

$ cat setup.py

#!/usr/bin/env python

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

from setuptools import setup

setup()

写到这里,一个空的egg配置文件就写好了。我们可以使用下面命令生成egg包:

$ python setup.py bdist_egg

下面看看究竟生成了什么:

$ ls -F

build/ dist/ setup.py UNKNOWN.egg-info/

可以看到多了三个文件夹。而在dist文件夹下,有一个egg文件:UNKNOWN-0.0.0-py2.6.egg。 产蛋成功!先看看这个egg文件是什么格式的:

$ file dist/UNKNOWN-0.0.0-py2.6.egg

dist/UNKNOWN-0.0.0-py2.6.egg: Zip archive data, at least v2.0 to extract

噢,原来就是一个zip压缩包呀!好,再来看看内部构造:

$ unzip -l dist/UNKNOWN-0.0.0-py2.6.egg

Archive: dist/KNOWN-0.0.0-py2.6.egg

Length Date Time Name

--------- ---------- ----- ----

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目录下找包,而不是原来默认的工程根目录。

python egg_python egg 简介相关推荐

  1. python包NiBabel对医学影像文件格式进行读写:python包NiBabel简介集示例

    python包NiBabel对医学影像文件格式进行读写:python包NiBabel简介集示例 目录 python包NiBabel对医学影像文件格式进行读写:python包NiBabel简介集示例

  2. python装饰器-python装饰器简介---这一篇也许就够了(推荐)

    Python装饰器(decorator)是在程序开发中经常使用到的功能,合理使用装饰器,能让我们的程序如虎添翼. 装饰器引入 初期及问题诞生 假如现在在一个公司,有A B C三个业务部门,还有S一个基 ...

  3. pycharm是不是python编程_使用PyCharm进行python开发的简介

    使用PyCharm进行python开发的简介 这个是很常见的一个问题,我想学习python,用什么编辑器呢? eclipse+pydev? IDLE? vim? 每个人有自己的习惯,可能是自己琢磨的, ...

  4. Python 和 egg 文件

    2019独角兽企业重金招聘Python工程师标准>>> 不会安装python的egg文件,在网上搜索了一下,被"蟒蛇蛋"这个词雷到了,记录下. 随着对python ...

  5. Python 3 mysql 简介安装

    Python 3 mysql 简介安装 一.数据库是什么 1.  什么是数据库(DataBase,简称DB) 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据 ...

  6. Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略

    Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3)).安装.学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略 ...

  7. python的scipy简介

    python的scipy简介 scipy和numpy的关系 scipy的子模块简介 scipy和numpy的关系 scipy是专门用于科学计算的一个常用的库,他于Numpy有着密切的关系,是需要通过N ...

  8. Python jieba库简介和使用

    今天继续给大家介绍Python相关知识,本文主要内容是Python jieba库简介和使用. 一.jieba库概述 jieba库是Python的一个第三方库,该库常用于中文分词.所谓分词,就是给定一段 ...

  9. chatgpt赋能python:Python波浪号简介

    Python 波浪号简介 在 Python 中,波浪号 "~" 具有一些特殊的用法.本文将为您介绍 Python 中波浪号的不同用法及其在代码中的应用. 异或运算 波浪号在 Pyt ...

最新文章

  1. 带来高收入的三大竞争力技巧,可以涨到40W了!
  2. list转map stream_advancedday10可变参数不可变集合及Stream流
  3. linux信号使用,linux信号使用注意事项
  4. docker安装nginx并进行-v挂载
  5. 如何在线把网站html生成xml文件_Sitemap在线生成器,网站地图在线生成工具
  6. BZOJ3172 TJOI2013 单词
  7. AIX逻辑卷管理(LVM)
  8. java gc时自动收dump_Full GC分析:设置Java VM参数实现在Full GC前后自动生成Dump
  9. 《天天数学》连载34:二月三日
  10. Unity网络:在局域网P2P网络中利用UDP广播实现保活/心跳
  11. 安卓开发应该知道的Drawable、Bitmap、Canvas和Paint的关系
  12. html中引入另一个html
  13. 哈工大车万翔教授:NLPer的核心竞争力是什么?
  14. 磁盘分区助手使用心得
  15. oracle标准成本的维护,Oracle标准成本计算和平均成本计算比较
  16. VSCode配置git图文
  17. 【LWIP】(补充)STM32H743(M7内核)CubeMX配置LWIP并ping通
  18. 谷歌打不开了吧,访问谷歌镜像Glgoo.com吧_我是亲民_新浪博客
  19. Vue教程-可视化图表
  20. python原始数据是什么_荐Python种MNE库模拟原始脑电数据

热门文章

  1. VS2008+VP5开发环境配置
  2. 数据结构学习笔记------图
  3. 数学方面的一些思维训练
  4. iOS Core Bluetooth_1 概述
  5. 彩虹瓶【含详细注释】
  6. linux trac svn,RedHat Linux5下apache+svn+trac配置手册(二)
  7. 基于JavaSwing的雷电游戏(附论文)
  8. python 定时给女朋友发QQ邮件
  9. 生信基础(三)——统计分析工具R语言
  10. Java IO练习--在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中