《2022年PYTHON的EGG包的安装和制作 .pdf》由会员分享,可在线阅读,更多相关《2022年PYTHON的EGG包的安装和制作 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一 setuptools和 easy_installsetuptools:setuptools是一组由 PEAK(Python EnterpriseApplicationKit)开发的 Python 的 distutils工具的增强工具,可以让程序员更方便的创建和发布 Python 的 egg包,特别是那些对其它包具有依赖性的状况。由setuptools创建和发布的包看起来和基于distutils发布的包没什么不同。 最终用户不需要事先安装setuptools甚至根本不需要知道setuptools的存在,而程序员也不需要附上完整的setuptools ,只需要包含一个大小约8K 的ez_set
2、up.py 脚本作为启动模块,就可以在最终用户没有安装适当版本的setuptools时让这些包自动下载和安装setuptools 。easy_install:常使用 python 的人员,当需要安装第三方python 包时,可能会用到 easy_install命令。easy_install是由 PEAK(Python EnterpriseApplicationKit) 开发的 setuptools包里带的一个命令,它用来自动地从http:/pypi.python.org/simple/来安装 egg包, 相当于 perl 中的 cpan 或 PPM 。二 windows上安装 setuptoo
3、l方法 1: exe 安装文件 从这里下载: setuptools-0.6c11.win32-py2.6.exe安装文件如果以前曾经安装旧版的setuptools ,则在安装之前需要将系统中的site-packages目录(以及任何其他sys.path目录)下的所有 setuptools*.egg和 setuptools.pth文件删除。如果之前也是使用 .exe 安装程序安装的 setuptools , 则安装前要在“添加 / 删除程序”中卸载旧的版本。安装完毕后,在 Python 的 Scripts子目录下就会出现 easy_install.exe程序。确保将这个目录(例如C:Python
4、26Scripts)加入 PATH环境变量。方法 2: 手工安装卸载旧版的方法同1 相同。下载 ez_setup.py脚本,http:/ ez_setup.py名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 三 Linux 上的 setuptool的安装Debian/Ubuntu 下可以直接使用apt 安装::$ sudo apt-getinstallpython-setuptools手工安装的话,有两种方式:通过引导程序ez_
5、setup.py来安装。这个引导程序会联网下载最新版本setuptools来安装,同时也可以更新本地的setuptools 。$ wget http:/ sudo python ez_setup.py更新 setuptools ::$ sudo python ez_setup.py-U setuptools或者下载 setuptools的 egg包来安装。可以在这里 查看最新版本下载。下载完毕以后通过sh 安装。$ wgethttp:/pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg$ sudo sh s
6、etuptools-0.6c11-py2.6.egg四 easy_install的使用1) 使用 easy_install来自动安装 egg 包比如说要安装 Python 的 MYSQL 支持,可以执行如下命令,系统会自动在pypi网站列表里查找相关软件包:easy_installMySQL-python 。通过 easy_install安装软件,相关安装信息会保存到easy-install.pth文件里,路径类似如下形式: C:Python25Libsite-packageseasy-install.pth。如果想删除通过 easy_install安装的软件包,比如说: MySQL-pyth
7、on ,可以执行命令: easy_install-m MySQL-python 。2)将 egg 安装包下载到本地安装进入到安装包的目录,执行python setup.pyinstall名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 3)如果 easy_install安装某模块有错的话,则可以自己到http:/pypi.python.org/simple/python-ldap/下载,然后使用 pythonsetup.pyins
8、tall来安装。有的时候 easy_install并不能够很好地自动安装,比如我安装ldap :easy_install.exepython-ldap , easy_install应该到http:/pypi.python.org/simple/python-ldap/下下载python-ldap-2.3.8.win32-py2.6.exe,但是 easy_install却找到了python-ldap2.3.12 , 最总导致安装有错。 (不知道是不是因为pypi 上没有 64bit的 egg,我的系统是 64bit 的,但是我的 python 是 32bit 的啊)五 egg 的制作egg 包
9、是目前最流行的python 应用打包部署方式。如何制作和安装egg包?下面我就简单的分析了一下。总是安装别人的 egg 包,是不是也想制作自己的egg 包呢?好,接下来我们就自己制作一个简单的egg 包。首先建立工程目录egg-demo,初始化一个 setup.py 文件:$ mkdir egg-demo$ cd egg-demo$ touch setup.py$ lssetup.py下面主要就是填充setup.py 。 setup.py 其实是 python 工具包 distutils的配置文件,setuptools就是基于distutils来做的。在 setup.py 中通过 setup
10、函数来配置打包信息。 首先要引入 setuptools的函数 setup 。 setuptools的 setup其实就是distutils的 setup 函数,填写 setup.py 为以下内容:$ cat setup.py#!/usr/bin/envpython#-*-coding:utf-8-*-from setuptoolsimportsetupsetup()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 写到这里,一个空
11、的egg 配置文件就写好了。我们可以使用下面命令生成egg包:$ python setup.pybdist_egg下面看看究竟生成了什么:$ ls-Fbuild/dist/setup.pyUNKNOWN.egg-info/可以看到多了三个文件夹。而在dist文件夹下,有一个egg 文件:UNKNOWN-0.0.0-py2.6.egg 。产蛋成功!先看看这个egg 文件是什么格式的:$ filedist/UNKNOWN-0.0.0-py2.6.eggdist/UNKNOWN-0.0.0-py2.6.egg:Zip archivedata,at leastv2.0 to extract噢,原来就是
12、一个zip 压缩包呀!好,再来看看内部构造:$ unzip-ldist/UNKNOWN-0.0.0-py2.6.eggArchive:dist/KNOWN-0.0.0-py2.6.eggLengthDateTimeName-1202010-12-06 17:04EGG-INFO/SOURCES.txt12010-12-06 17:04EGG-INFO/top_level.txt12010-12-06 17:04EGG-INFO/zip-safe12010-12-06 17:04EGG-INFO/dependency_links.txt2272010-12-06 17:04EGG-INFO/PK
13、G-INFO-3505 files只有一个 EGG-INFO 文件夹,内含五个egg 信息文件,没了。这个 egg 名称未知,版本 0.0.0 。这是因为我们在setup 里什么也没有设置。显然,这个 egg 什么也不能做。下面给它加点料。在 setup.py中,setup 函数接收一系列属性作为配置参数。name name是 egg包的名称,也是寻找要打包的文件夹的名称,默认是UNKNOWN。version版本号,默认 0.0.0名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4
14、页,共 7 页 - - - - - - - - - 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/envpython
15、#-*-coding:utf-8-*-from setuptoolsimportsetup,find_packagessetup(name= demo,version=0.1.0,packages = find_packages(),zip_safe= False,description= egg testdemo.,long_description= egg testdemo, haha.,author= amoblin,author_email= ,license= GPL,keywords = (test,egg),platforms= Independant,url= ,)在 egg-
16、demo目录下建立和上述 name名称相同的目录 demo ,demo目录下写_init_.py文件:$ mkdir demo$ cat demo/_init_.py#!/usr/bin/envpython#-*-coding:utf-8-*-def test():printHello,Imamoblin.if_name_= _main_:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - test()再次生成 egg 包以后查看
17、egg 包信息:$ python setup.pybdist_egg$ unzip-ldist/demo-0.1.0-py2.6.eggArchive:dist/demo-0.1.0-py2.6.eggLengthDateTimeName-1212010-12-06 17:30demo/_init_.py3442010-12-06 17:46demo/_init_.pyc1372010-12-06 17:46EGG-INFO/SOURCES.txt52010-12-06 17:46EGG-INFO/top_level.txt12010-12-06 17:46EGG-INFO/zip-safe1
18、2010-12-06 17:46EGG-INFO/dependency_links.txt2272010-12-06 17:46EGG-INFO/PKG-INFO-8367 files可以看到,多了一个文件夹demo ,里面有我们写的 _init_.py。奉行敏捷原则,先安装了体验一下再说:$ sudo python setup.pyinstallrunninginstallinstall_dir/usr/local/lib/python2.6/dist-packages/.creating/usr/local/lib/python2.6/dist-packages/demo-0.1.0-py
19、2.6.eggExtractingdemo-0.1.0-py2.6.eggto/usr/local/lib/python2.6/dist-packagesdemo 0.1.0isalreadythe activeversionineasy-install.pthInstalled/usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.eggProcessingdependencies fordemo=0.1.0Finishedprocessingdependencies fordemo=0.1.0OK!安装完毕!接下来我们就可以直接通过i
20、mport 来使用啦!$ python -c fromdemoimporttest;test()Hello,Imamoblin.成功输出!这说明安装正确。我们的一个egg 包诞生了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 一般情况下,我们的源程序都放在src 目录下,所以接下来将demo文件夹移动到 src 里。但这样也要修改setup.py文件,修改 find_packages函数中参数为src ,同时增加 packa
21、ge_dir 参数:packages=find_packages(src),package_dir= :src这样告诉 setuptools在 src 目录下找包,而不是原来默认的工程根目录。最后我们来手动的卸载以下刚才安装的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.pth|grepdemo./demo-0.1.0-py2.6.egg$ ls-F|grepdemodemo-0.1.0-py2.6.egg/卸载 egg 文件很简单,首先将包含此egg 的行从 easy-install.pth中删除,然后删除 egg 文件夹即可。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -