zoukankan      html  css  js  c++  java
  • Python包管理工具setuptools详解及entry point

    1.什么是setuptools?
    setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建包时,并不需要已安装setuptools,只要一个启动模块即可。
    功能亮点:
    利用EasyInstall自动查找、下载、安装、升级依赖包
    创建Python Eggs
    包含包目录内的数据文件
    自动包含包目录内的所有的包,而不用在setup.py中列举
    自动包含包内和发布有关的所有相关文件,而不用创建一个MANIFEST.in文件
    自动生成经过包装的脚本或Windows执行文件
    支持Pyrex,即在可以setup.py中列出.pyx文件,而最终用户无须安装Pyrex
    支持上传到PyPI
    可以部署开发模式,使项目在sys.path中
    用新命令或setup()参数扩展distutils,为多个项目发布/重用扩展
    在项目setup()中简单声明entry points,创建可以自动发现扩展的应用和框架
    总之,setuptools就是比distutils好用的多,基本满足大型项目的安装和发布

    2.安装setuptools

    1. 最简单安装,假定在ubuntu下
      sudo apt-get install python-setuptools
    2. 启动脚本安装
      wget http://peak.telecommunity.com/dist/ez_setup.py
      sudo python ez_setup.py

    3.创建一个简单的包
    有了setuptools后,创建一个包基本上是无脑操作
    cd /tmp
    mkdir demo
    cd demo

    4、在demo中创建一个setup.py文件,写入如下内容:
    from setuptools import setup, find_packages
    setup(
    name = "demo",
    version = "0.1",
    packages = find_packages(),
    )

    5、执行python setup.py bdist_egg即可打包一个test的包
    demo
    |-- build
    | -- bdist.linux-x86_64 |-- demo.egg-info | |-- dependency_links.txt | |-- PKG-INFO | |-- SOURCES.txt | -- top_level.txt
    |-- dist
    | -- demo-0.1-py2.7.egg -- setup.py
    在dist目录下生成的是egg包
    生成的.egg文件,改成zip扩展名,解开看看先
    upzip -l dist/demo-0.1-py2.7.egg

    Archive: dist/demo-0.1-py2.7.egg
    Length Date Time Name


        1  2013-06-07 22:03   EGG-INFO/dependency_links.txt
        1  2013-06-07 22:03   EGG-INFO/zip-safe
      120  2013-06-07 22:03   EGG-INFO/SOURCES.txt
        1  2013-06-07 22:03   EGG-INFO/top_level.txt
      176  2013-06-07 22:03   EGG-INFO/PKG-INFO
    

      299                     5 files
    

    包里面是一系列自动生成的文件

    6、setup() 函数可用参数解释
    name
    egg name
    name = "HelloWorld"

    version = "0.1"
    版本号
    version = "0.1"

    packages
    所要包含的package(包含__init__.py的文件夹),find_packages() 函数在后面会有解释
    packages = find_packages()
    package_dir
    所要搜索的 package 路径,这个需要与 find_packages() 中的参数成对使用,详见后面的测试

    scripts
    指定python源码文件
    scripts = ['say_hello.py']

    install_requires
    install_requires = ['docutils>=0.3']

    package_data
    所要包含的包中的文件,格式为:
    package name : [file name],当 package name 为空时,代表所有包,file name 可以为 *.txt 之类的表达。具体可以看右边的例子
    package_data = {
    If any package contains .txt or .rst files, include them用如下命令:
    '': ['
    .txt', '
    .rst'],
    And include any .msg files found in the 'hello' package, too用如下命令:
    'hello': ['
    .msg']
    }
    author
    author = "Me"
    author_email

    author_email = "me@example.com"

    description
    description = "This is an Example Package"

    license
    license = "PSF"

    keywords
    keywords = "hello world example examples"

    url
    项目主页(home page)
    url = "http://example.com/HelloWorld/"

  • 相关阅读:
    Team Foundation Server操作说明
    SPSS二次开发
    EXT 组件一些属性与方法(Tree)
    win10经验总结
    for语句执行顺序
    数组快速生成range的方法
    切图技巧
    input和textarea区别
    hosts文件位置
    css3动画总结
  • 原文地址:https://www.cnblogs.com/potato-chip/p/9077586.html
Copyright © 2011-2022 走看看