使用setuptools打包python项目

来源:互联网 发布:历代职官沿革史淘宝 编辑:程序博客网 时间:2024/06/06 11:47

使用setuptools打包Python Scrapy程序

0、目标

开发机上(Ubuntu14.04)有一个BloomFilter算法的简单实现,使用setuptools对其进行打包发布。

1、安装setuptools

sudo apt-get install python-setuptools

2、项目的目录结构

因为使用Scrapy创建的项目baidutieba,所以项目目录结构如下:

demo
|--bloomfilter
   |--__init__.py
   |--bloomfilter.py
   |--readme.txt
   |--bf.pkl

其中,txt文件是说明文档文件,pkl文件是一个bloomfilter中的对象实例的pickle文件。

3、创建setup.py文件

在项目根目录(demo)下创建文件setup.py,内容如下:

from setuptools import setup, find_packages

setup(
    name = "bloomfilter",
    version = "0.1",
    packages = find_packages(),
    package_data = {
        'bloomfilter':['*.txt','*.pkl'],
    }
)

packages = find_packages()参数指定在当前目录下搜索包;
package_data定义了包含bloomfilter包中的txt文件和pkl文件。

4、将项目打包成egg文件

执行命令:

python setup.py bdist_egg

命令执行成功后,项目目录结构为:

demo/
|--bloomfilter/
   |--__init__.py
   |--bloomfilter.py
   |--readme.txt
   |--bf.pkl
|--bloomfilter.egg-info/
   |--dependency_links.txt
   |--PKG-INFO
   |--SOURCES.txt
   |--top_level.txt
|--build/
   |--bdist.linux-x86_64/
   |--lib.linux-x86_64-2.7/
|--dist/
   |--bloomfilter-0.1-py2.7.egg
|--setup.py

5、安装项目

执行命令:

sudo python setup.py install

安装过程会生成下面这个egg文件:

/usr/local/lib/python2.7/dist-packages/bloomfilter-0.1-py2.7.egg

查看egg中包含的文件:

unzip -l bloomfilter-0.1-py2.7.egg
Archive:  bloomfilter-0.1-py2.7.egg
  Length      Date    Time    Name
---------  ---------- -----   ----
        1  2015-08-25 15:45   EGG-INFO/zip-safe
      241  2015-08-25 15:45   EGG-INFO/SOURCES.txt
       12  2015-08-25 15:45   EGG-INFO/top_level.txt
      183  2015-08-25 15:45   EGG-INFO/PKG-INFO
        1  2015-08-25 15:45   EGG-INFO/dependency_links.txt
      932  2015-08-25 14:23   bloomfilter/bloomfilter.py
     1255  2015-08-25 14:57   bloomfilter/bf.pkl
        0  2015-08-25 15:38   bloomfilter/readme.txt
     2762  2015-08-25 15:45   bloomfilter/bloomfilter.pyc
        0  2015-08-25 14:24   bloomfilter/__init__.py
      139  2015-08-25 15:45   bloomfilter/__init__.pyc
---------                     -------
     5526                     11 files

可以看到所有文件全部打包成功了。

6、测试

进入python命令行,直接使用安装过的包:

>>> from bloomfilter.bloomfilter import *
>>> bf = BloomFilter(50)
>>> bf.add("www.baidu.com")
>>> bf.add("www.google.com")
>>> bf.contains("www.baidu.com")
True
>>> bf.contains("www.sina.com")
False

7、其他参考

http://pythonhosted.org/setuptools/setuptools.html#basic-use
http://stackoverflow.com/questions/774824/explain-python-entry-points





0 0
原创粉丝点击