• Python 自定义三方库


    一、注册一个pypi账号

    https://pypi.org/

    二、github上创建一个项目

    https://github.com/

    三、编写自己的python项目

    项目结构(参考):https://github.com/gm19900510/licensetool

    先建一个目录,比如magetool,这个里边放的是你的项目代码。在这个magetool目录里,新建一个__init__.py,这个文件里可以什么都不用写,然后就是你要发布的.py文件

    四、编写setup.py

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    #############################################
    # File Name: setup.py
    # Author: gm
    # Mail: 1025304567@qq.com
    # Created Time: 2019-04-11 15:37:04
    #############################################
    
    
    from setuptools import setup, find_packages
    
    setup(
        name = "licensetool",
        version = "0.0.2",
        keywords = ("pip", "license","licensetool", "tool", "gm"),
        description = "设备指纹获取、license生成、指纹与有效期验证工具",
        long_description = "设备指纹获取、license生成、指纹与有效期验证工具",
        license = "MIT Licence",
    
        url = "https://github.com/gm19900510/licensetool",
        author = "gm",
        author_email = "1025304567@qq.com",
    
        packages = find_packages(),
        include_package_data = True,
        platforms = "any",
        install_requires = ['chardet']
    )
    

    官方示例及说明

    import setuptools
    
    with open("README.md", "r") as fh:
        long_description = fh.read()
    
    setuptools.setup(
        name="example-pkg-your-username",
        version="0.0.1",
        author="Example Author",
        author_email="author@example.com",
        description="A small example package",
        long_description=long_description,
        long_description_content_type="text/markdown",
        url="https://github.com/pypa/sampleproject",
        packages=setuptools.find_packages(),
        classifiers=[
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
        ],
    )
    

    setup()接受几个参数。此示例包使用相对最小的集合:

    • name是包的分发名称。只要包含字母,数字_和 -。
    • version 是包版本看 PEP 440有关版本的更多详细信息。
    • author 和author_email用于识别包的作者。
    • description 是一个简短的,一句话的包的总结。
    • long_description是包的详细说明。这显示在Python Package Index的包详细信息包中。在这种情况下,加载长描述README.md是一种常见模式。
    • long_description_content_type告诉索引什么类型的标记用于长描述。在这种情况下,它是Markdown。
    • url是项目主页的URL。对于许多项目,这只是一个指向GitHub,GitLab,Bitbucket或类似代码托管服务的链接。
    • packages是应包含在分发包中的所有Python 导入包的列表。我们可以使用 自动发现所有包和子包,而不是手动列出每个包。在这种情况下,包列表将是example_pkg,因为它是唯一存在的包。find_packages()
    • classifiers告诉索引并点一些关于你的包的其他元数据。在这种情况下,该软件包仅与Python 3兼容,根据MIT许可证进行许可,并且与操作系统无关。您应始终至少包含您的软件包所使用的Python版本,软件包可用的许可证以及您的软件包将使用的操作系统。有关分类器的完整列表,请参阅 https://pypi.org/classifiers/。

    MANIFEST.in文件

    用于包含其他文件

    具体格式和参数参考 https://docs.python.org/3.6/distutils/sourcedist.html

    include licensetool/private.pem
    include MANIFEST.in
    

    五:打包自已的项目

    在代码编写完成,自已测试后没有问题了,就可以打包了。 打包使用下边两个其中一个命令(我使用的是第二个):

    python setup.py bdist_egg # 生成类似 edssdk-0.0.1-py2.7.egg,支持 easy_install

    python setup.py sdist# 生成类似 edssdk-0.0.1.tar.gz,支持 pip
    两个命令打包好之后都会生成build和dist两个目录,打包的文件会放在dist目录下,供后边上传到PyPi服务器

    六:上传到PyPi服务器

    安装twine
    pip install twine
    上传
    twine upload dist/*
    执行完这行指令之后,会提示输入pypi的用户名和密码,正常输入就可以

  • 相关阅读:
    CentOS 7 下Emacs无法录入中文的问题
    GPS文件中的C1--->P1转换
    centos7上搭建http服务器以及设置目录访问
    在Linux和Windows之间的远程控制的实现
    Emacs中的代码折叠控制
    Fortran程序调试中的“吐核”错误
    CentOS 7.6 系统上添加最新版 NetCDF 4.6.1
    迁移 Emacs 的自定义设置
    CentOS 7系统上制作Clonezilla(再生龙)启动U盘并克隆双系统
    [CentOS 7] TexLive2017中kpsewhich Bug的修复
  • 原文地址:https://www.cnblogs.com/gmhappy/p/11863963.html
Copyright © 2020-2023  润新知