• python分发包管理


    为什么使用包管理?

    python的模块或者源文件直接可以复制到目标项目目录中,就可以导入使用了。

    但是为了更多项目调用使用,或者共享给别人,就需要打包,或发布到网络,以便供人使用。目的也是为了复用。

    Pypi(python package lndex),公共的模块存储中心,https://pypi,python.org/pypi

    主要工具

    distutils

    官方库didtutils,使用安装架脚本setup.py来构建、安装包。

    从1998年就是标准库的一部分,直到2000年停止开发。

    setuptools

    它是替代distutils的增强版工具箱,包含easy_install工具,使用ez_setup.py文件,支持egg格式的构建和安装。

    提供查询、下载、安装、构建、发布、管理等包管理功能。

    setuptools是包管理的核心模块。

    后来,setuptools开发缓慢了,出现了基于setuptools的distribute来替代setuptools。20113年,这两个项目重新合并,distrribute被废弃,setuptools依然是python安装打包的标准方式。

    pip

    pip目标包管理的事实标准。构建在setuptools之上,替代easy_install的。同样提供丰富的包管理功能。

    wheel

    提供bdist_wheel作为setuptools的扩展命令,这个命令可以用来生成新打包格式wheel。

    pip从1.4版本开始提供了一个wheel子命令来安装wheel包。当然,需要先安装wheel模块,它可以让python库以二进制形式安装,而不需要在本地编译。

    使用setup.py打包

    setup.py创建一个源代码分发包的例子,参照例子

    https://docs.python.org/3.5/distutils/setupscript.html

    查看子命令

     

     然后再在工程里面新建一个setup.pyw文件,

    setup如下:

     

    #setup.py文件
    from
    distutils.core import setup #导入set函数并传参 setup(name="m", version="0.1", description= 'python test m', author="xpc", author_email="xpc_199151@163.com", packages = ["m","m.m1","m.m2","m.m2.m21"] ) #name 名字 #version 版本 #packages = []打包列表 #packages = ["m"]指定m,就会把m所有的非目录子模块打包 #["m","m.m1.m2.m3",],逐级建立目录,但是只把m的所有非目录子模块打包,把m.m1.m2.m3打包 #description 描述信息 #author 作者 #url包的主页,可以不写

    查询命令的帮助

    python setup.py cmd -help,可以直接进入文件夹,然后shift+右键,可以调出cmd命令窗口。

    build命令,编译

    创建一个build目录

    python setup.py build 

    以下是packages = ["m"]配置的结果。

     

     在项目目录下多了build目录,有一个lib子目录,lib下就是模块m的目录了。

    m目录下的*.py文件被复制了,但是子目录没有被复制。

    以下是packages = 【“m.m2.m21”】配置的结果。

     可以看出,逐级构建了同样的目录结构,并只拷贝了m21的__init__。py文件。

    以下是packages = ["m","m.m2.m21"]配置的结果

     build得到的文件,直接拷贝到其他项目就可以用。

    imstall命令,安装

    build后就可以install,直接运行

    python setup.py install 

    如果没有build,会先build编译,然后安装。

    sdist命令,分发

    sdist命令

    python setup.py sdist

    创建源代码的分发包。

    产生一个dist目录,里面生成一个带版本号的压缩包。

    在其他地方解压这个文件,里面有setup.py,就可以使用python setup.py install 安装了,也可以pip install m-0.0.1.zip直接使用pip安装这个压缩包。

    可以把自己写好的模块发布在公共的pypi上,也可以搭建pypi私服,供企业内部使用。

    pypi里面的模块没有太好的审核机制,不保证安全,请谨慎使用。

    wheel包

    安装wheel依赖

    pip install wheel

    setup.py修改如下。

  • 相关阅读:
    poj2452
    bnuoj16491
    1326: The contest(并查集+分组背包)
    BNUOJ-1065或运算的简单解法
    递推、规律思维题总结
    uva10160(dfs+状态压缩)
    第七章 人工智能,7.1 基于深度强化学习与自适应在线学习的搜索和推荐算法研究(作者:灵培、霹雳、哲予)
    第六章 大数据,6.3 突破传统,4k大屏的沉浸式体验(作者: 彦川、小丛)
    第六章 大数据,6.2 双11背后的大规模数据处理(作者:惠岸 朋春 谦乐)
    第六章 大数据,6.1 双11数据大屏背后的实时计算处理(作者:藏六 黄晓锋 同杰)
  • 原文地址:https://www.cnblogs.com/xpc51/p/12011002.html
Copyright © 2020-2023  润新知