zoukankan      html  css  js  c++  java
  • Python-打包分发

    1、包管理

      为什么要使用包管理?

        Python的模块或者源文件直接可以复制到目标项目目录中,即可以导入使用了。但是为了更多项目调用使用,或者共享给别人使用,就需要打包,或者发布到网路,以便供人使用,目的也是为了复用。

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

    2、主要工具:

      distutils:

        官方库distutils,使用安装脚本setup.py来构建,安装包。2000年停止开发

      setuptools:

        它是替代distutils 的增强版工具集,包含easy_install 工具,使用ez_setup.py文件,支持egg格式的构建和安装,提供查找,下载安装构建,发布,管理等包管理功能。

        setuptools是包管理的核心模块。

      pip:

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

        从Python3.4 开始之间包好在安装文件中。

      wheel:

        wheel格式定义在PEP427中

        wheel文件中不包含.pyc 文件

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

        pip 从1.4版本开始 提供了一个wheel子命令来安装wheel包,当然,需要先安装wheel模块。

        它可以让Python库以二进制形式安装,而不需要本地编译。

    3、使用setup.py打包  

     1 # from distutils.core import setup
     2 from setuptools import setup
     3 
     4 # 导入setup函数并传参
     5 setup(name='m',
     6       version='0.1.0',
     7       description='Python test m',
     8       author='jery',
     9       author_email='jerry@mage.com',
    10       # url='https://ww.python.org/sigs/distuils-sig/',
    11       packages=['m', 'm.m2', 'm.m2.m21'],
    12       py_modules=['tt']
    13       )
    14 # name 名字
    15 # version 版本
    16 # packages=[] 打包列表
    17 # packages=['m'] ,指定m, 就会把 m 所有的 非目录子模块打包
    18 # ['m', 'm.m1', 'm.m1.m2', 'm.m1.m2.m3']
    19 # description 描述信息
    20 # author 作者
    21 # author_email 作者邮件
    22 # url 包的主页,可以不写
    setup.py

      setup.py 创建一个源代码分发的例子,参照例子:https://docs.python.org/3.5/distutils/setupscript.html

      查看子命令:pycharm中的Treminal中:

      $ setup.py --help [ cmd1 cmd2 ...]

      $ python setup.py --help-commands

      $ setup.py cmd --help

      测试:build命令,编译:

      $ python setup build

      

      可以看到在项目目录下 多了一个build目录,有一个 lib 子目录,lib系就是模块m 的目录了,m目录下的*.py 文件被复制了,但是子目录没有被复制。

      测试:sdist 命令,分发

      $ python setup.py sdist

      创建源代码的分发包,产生一个dist目录,里面生成一个带版本号的压缩包。

      

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

      $ python setup.py bdist_wininst # 制作windows下的分发包

      $ python setup.py bdist_rpm # 打包成rpm

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

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

       

      wheel 包

      安装wheel依赖:

        $ pip install wheel

      修改为:

       

      执行:

        python setup.py bdist_egg

        python setup.py bdist_wheel 

      

      将摸个模块也加入进去:

      

     4、补充:

      1、可以在帮助文档查看:

      

      2、在linux安装后,在

        /home/python/.pyenv/versions/jerry366/lib/python3.6/site-packages可以查看

        安装whl,egg,或者zip都可以!

        

      

    为什么要坚持,想一想当初!
  • 相关阅读:
    CF Mike and Feet (求连续区间内长度为i的最小值)单调栈
    BOOST_CLASS_EXPORT
    STL 源代码剖析 算法 stl_algo.h -- search
    烦人的Facebook分享授权
    [Swift]Scanner字符串扫描类
    [Swift]LeetCode682. 棒球比赛 | Baseball Game
    [Swift]LeetCode680. 验证回文字符串 Ⅱ | Valid Palindrome II
    [Swift]LeetCode679. 24点游戏 | 24 Game
    [Swift]LeetCode678. 有效的括号字符串 | Valid Parenthesis String
    [Swift]LeetCode677. 键值映射 | Map Sum Pairs
  • 原文地址:https://www.cnblogs.com/JerryZao/p/9734389.html
Copyright © 2011-2022 走看看