zoukankan      html  css  js  c++  java
  • 手把手教你发布一个Python包

    本文主题如下:

    编写一个包(Python 源代码),但不是本文的重点。

    编译包,观察编译后的文件。

    发布包,发布的包可以有多种类型。

    如何在 Pypi 中查看已发布的包

    注意:

    本文编写的包在 Python2 环境下测试通过,实际上这个包(只是个例子)比较简单,在 Python3 下也能运行。

    本文知识点可能陈旧,比如 Python Pypi 官方已做了很大改变。

    1. 编写包源代码

    这篇文章主要描述如何发布一个包,不描述如何编写一个包,如果你没有代码(只想学习如何发布包),可下载下面的示例。

    $ wget "https://files.pythonhosted.org/packages/96/66/43e6df87373557553be2b4343db27d008c6dcefa110ccff38cba1459ca07/ywdblogmath-0.1.tar.gz"
    

    2. 查看 setup.py

    为了生成和发布包,必须编写 setup.py 文件,编写该文件必须依赖于 setuptools 包,这个包本身也是一个 Python 包。.

    #!/usr/bin/env python
    from setuptools import setup
    setup(name='ywdblogmath',
        version='0.1',
        description='A silly ywdblogmath package',
        author='ywdblog',
        author_email='ywdblog@gmail.com',
        url='http://www.yudadan.com/',
        packages=['ywdblogmath', 'ywdblogmath.adv'],
    )
    
    

    望文生义,不过多讲解相应的参数。

    3. 测试本地包

    首先将该代码生成一个本地包,然后编写代码测试该包的功能。

    在开发模式下安装包:

    $ python setup.py develop
    

    观察安装后生成的文件:

    /usr/local/lib/python2.7/dist-packages/ywdblogmath.egg-link
    
    /usr/local/lib/python2.7/dist-packages/easy-install.pth
    
    这二个文件包含的内容就是 /root/python(一个软连接)。
    

    编写测试文件 example.py :

    import sys
    import ywdblogmath
    print(ywdblogmath.add(4,5))
    print(ywdblogmath.division(4, 2))
    print(ywdblogmath.multiply(10, 5))
    print(ywdblogmath.squareroot(48))
    

    然后运行 example.py:

    $ python  example.py
    	9
    	2
    	50
    	6.92820323028.
    

    4. 配置 pypi

    (1)为了发布包,必须在 pypi.org 注册一个用户,注册邮箱需要验证。
    (2)配置 $HOME”.pypirc” 文件:

    [distutils]
    index-servers=pypi
    [pypi]
    repository = https://upload.pypi.org/legacy/
    username = pypi.org 登录名
    password = pypi.org 登陆密码
    

    5. 发布包

    在发布包之前,运行下列命令了解所有可用的命令:

    $ python setup.py --help-commands
    

    先编译包:

    $ python setup.py build
    

    运行完成后生成 /root/python/build 目录,所以编译的文件保存在该目录下。

    (1)生成 tar.gz 包

    $ python setup.py sdist
    

    运行后产生下列文件:

    /root/python/dist/ywdblogmath-0.1.tar.gz
    /root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也会生成该文件)

    (2)生成 egg 包

    $ python setup.py bdist_egg
    

    运行后产生下列文件:

    /root/python/dist/ywdblogmath-0.1-py2.7.egg
    /root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也会生成该文件)

    (3)生成 wheel 包

    $ python setup.py bdist_wheel
    

    运行后产生下列文件:

    /root/python/dist/ywdblogmath-0.1-py2-none-any.whl
    /root/python/ywdblogmath.dist-info

    最后发布包(任何一个命令都可以):

    # 发布 .tar.gz 包
    $ python setup.py sdist upload 
    # 发布 egg 包
    $ python setup.py bdist_egg upload 
    # 发布 wheel 包
    $ python setup.py bdist_wheel upload
    

    至于发布什么类型的包,读者自己决定,如果想让所有的包安装工具(比如 pip、easy_install )都能安装你发布的包,可同时发布这三种类型的包。

    登录 pypi.org 查看发布的包

    在发布包的时候,可能会遇到很多命令行提示的错误,这些内容不是本文的重点,另外注意 setpy.py 中的包版本号,可以测试发布多版本的包。

  • 相关阅读:
    使用Eclipse进行远程调试【转】
    JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program
    Window 通过cmd查看端口占用、相应进程、杀死进程等的命令【转】
    A cycle was detected in the build path of project
    调用CXF工具 生成 WSDL【转】
    解决cxf+spring发布的webservice,types,portType和message以import方式导入
    Target runtime com.genuitec.runtime.generic.jee50 is not defined
    修改eclipse启动时eclipse使用的jre
    JAVA中堆栈和内存分配原理
    JVM -Xss调整Stack Space的大小 【转】
  • 原文地址:https://www.cnblogs.com/CoXieLearnPython/p/9452628.html
Copyright © 2011-2022 走看看