python egg_python egg 简介
$ 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 简介相关推荐
- python包NiBabel对医学影像文件格式进行读写:python包NiBabel简介集示例
python包NiBabel对医学影像文件格式进行读写:python包NiBabel简介集示例 目录 python包NiBabel对医学影像文件格式进行读写:python包NiBabel简介集示例
- python装饰器-python装饰器简介---这一篇也许就够了(推荐)
Python装饰器(decorator)是在程序开发中经常使用到的功能,合理使用装饰器,能让我们的程序如虎添翼. 装饰器引入 初期及问题诞生 假如现在在一个公司,有A B C三个业务部门,还有S一个基 ...
- pycharm是不是python编程_使用PyCharm进行python开发的简介
使用PyCharm进行python开发的简介 这个是很常见的一个问题,我想学习python,用什么编辑器呢? eclipse+pydev? IDLE? vim? 每个人有自己的习惯,可能是自己琢磨的, ...
- Python 和 egg 文件
2019独角兽企业重金招聘Python工程师标准>>> 不会安装python的egg文件,在网上搜索了一下,被"蟒蛇蛋"这个词雷到了,记录下. 随着对python ...
- Python 3 mysql 简介安装
Python 3 mysql 简介安装 一.数据库是什么 1. 什么是数据库(DataBase,简称DB) 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据 ...
- Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略
Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3)).安装.学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略 ...
- python的scipy简介
python的scipy简介 scipy和numpy的关系 scipy的子模块简介 scipy和numpy的关系 scipy是专门用于科学计算的一个常用的库,他于Numpy有着密切的关系,是需要通过N ...
- Python jieba库简介和使用
今天继续给大家介绍Python相关知识,本文主要内容是Python jieba库简介和使用. 一.jieba库概述 jieba库是Python的一个第三方库,该库常用于中文分词.所谓分词,就是给定一段 ...
- chatgpt赋能python:Python波浪号简介
Python 波浪号简介 在 Python 中,波浪号 "~" 具有一些特殊的用法.本文将为您介绍 Python 中波浪号的不同用法及其在代码中的应用. 异或运算 波浪号在 Pyt ...
最新文章
- 带来高收入的三大竞争力技巧,可以涨到40W了!
- list转map stream_advancedday10可变参数不可变集合及Stream流
- linux信号使用,linux信号使用注意事项
- docker安装nginx并进行-v挂载
- 如何在线把网站html生成xml文件_Sitemap在线生成器,网站地图在线生成工具
- BZOJ3172 TJOI2013 单词
- AIX逻辑卷管理(LVM)
- java gc时自动收dump_Full GC分析:设置Java VM参数实现在Full GC前后自动生成Dump
- 《天天数学》连载34:二月三日
- Unity网络:在局域网P2P网络中利用UDP广播实现保活/心跳
- 安卓开发应该知道的Drawable、Bitmap、Canvas和Paint的关系
- html中引入另一个html
- 哈工大车万翔教授:NLPer的核心竞争力是什么?
- 磁盘分区助手使用心得
- oracle标准成本的维护,Oracle标准成本计算和平均成本计算比较
- VSCode配置git图文
- 【LWIP】(补充)STM32H743(M7内核)CubeMX配置LWIP并ping通
- 谷歌打不开了吧,访问谷歌镜像Glgoo.com吧_我是亲民_新浪博客
- Vue教程-可视化图表
- python原始数据是什么_荐Python种MNE库模拟原始脑电数据
热门文章
- VS2008+VP5开发环境配置
- 数据结构学习笔记------图
- 数学方面的一些思维训练
- iOS Core Bluetooth_1 概述
- 彩虹瓶【含详细注释】
- linux trac svn,RedHat Linux5下apache+svn+trac配置手册(二)
- 基于JavaSwing的雷电游戏(附论文)
- python 定时给女朋友发QQ邮件
- 生信基础(三)——统计分析工具R语言
- Java IO练习--在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中