• 教师妹学python之十:共享代码


    10.1 PyPi是什么?

    PyPi 是 Python Package Index 的首字母简写,其实表示的是 Python 的 Packag 索引,这个也是 Python 的官方索引。

    你需要的包(Package)基本上都可以从这里面找到。作为开源软件,你也希望能够贡献你的 Package 到这里供其他用户使用。我们举个栗子,如果你希望你的 Python 程序能够下载金融数据,目前比较好用的金融数据来源是 Yahoo 和 Google。你可能需要读取这 2 个平台的 API,然后做一个下载部分的代码,然后将这个代码整合到自己的项目中。是不是好麻烦,这样你可以到 PyPi 到上面去找找有没有人已经写过这个内容了,幸运的是,你真找到了,你找到了一个 package 叫做 yfinance。但是这个代码在远程,没有在本地呀,怎么用了?

    你就需要将需要的内容从 PyPi 上下载下来引用即可。

    安装模块的指令:

    pip install yfinance

    10.2 共享你的代码

    10.2.1 函数转换为模块

    编写代码,随便写了一个判断奇数的函数

    #!/usr/bin/env python3
    # _*_ coding: utf-8 _*_
    # @Author : qa.yw
    # @Time : 2021/3/30 11:19
    # @File : isOdd.py
    # @desc : 判断奇数函数
    '''
    此函数判断num是否属于奇数
    '''
    
    def isOddNum(num):
        if num % 2 == 0:
            return False
        else:
            return True
    

    代码保存到isOdd.py文件中。

    10.2.2 准备发布

    为了共享isOdd.py这个模块,需要准备一个发布。在Python中,发布(distribution)是指一个文件集合,这些文件联合在一起允许你构建、打包、和发布你的代码。

    1. 为模块创建一个文件夹 isOdd,将isOdd.py复制到文件夹。
    2. 在isOdd文件夹中创建一个"setup.py"文件,这个文件包含有关发布的元数据。
    from distutils.core import setup
    
    setup(
        name='isOdd',
        version='1.0.0',
        py_modules=['isOdd'],
        author='qa.yw',
        author_email='byteflow@163.com',
        url='https://www.baidu.com',
        description='A function judging odd'
    )

     python3 setup.py check, 检查setup.py文件是否规范。

    10.2.3 构建发布

    现在已经有一个文件,里面包含两个文件:模块代码在isOdd.py文件,模块的元数据在setup.py文件。

    1. 构建一个发布文件,在isOdd文件夹下打开一个终端,执行命令:python3 setup.py sdist
    $ python3 setup.py sdist
    running sdist
    running check
    warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)
    
    warning: sdist: standard file not found: should have one of README, README.txt, README.rst
    
    writing manifest file 'MANIFEST'
    creating isOdd-1.0.0
    making hard links in isOdd-1.0.0...
    hard linking isOdd.py -> isOdd-1.0.0
    hard linking setup.py -> isOdd-1.0.0
    creating dist
    Creating tar archive
    removing 'isOdd-1.0.0' (and everything under it)
    1. 将发布安装到你的Python本地副本中,执行命令:sudo python3 setup.py install
    $ sudo python3 setup.py install
    
    running install
    running build
    running build_py
    creating build
    creating build/lib
    copying isOdd.py -> build/lib
    running install_lib
    copying build/lib/isOdd.py -> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages
    byte-compiling /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/isOdd.py to isOdd.cpython-37.pyc
    running install_egg_info
    Writing /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/isOdd-1.0.0-py3.7.egg-info

    发布介绍

    利用Python发布工具,你的模块已经转换为一个发布,并且安装到你的Python本地副本上。

    MANIFEST-这个文件包含发布中的文件列表

    build文件-新增的文件夹

    dist-发布包

    1. 通过上述操作,你的模块已经可以在本地引用了。

    10.2.4 注册PyPi网站

    当然上述你的模块仅仅只是在本地可以引用,但是其他人还不能引用你的模块,如果能让全世界的人都能用你的模块,你就要向PyPi上传你的发布。PyPI · The Python Package Index

    10.2.5 向PyPi上传代码

    方法1:

    1. 执行 python3 setup.py register
    $ python3 setup.py register 
    running register
    running check
    We need to know who you are, so please choose either:
     1. use your existing login,
     2. register as a new user,
     3. have the server generate a new password for you (and email it to you), or
     4. quit
    Your selection [default 1]: 
    1
    Username: qa.yw
    Password: 
    Registering isOdd to https://upload.pypi.org/legacy/
    Server response (500): <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)>
    1. 执行 python3 setup.py sdist upload

    方法2:

    使用twine上传你的项目

    pip3 install twine
    1. python3 setup.py sdist
    python3 setup.py sdist
    1. twine upload dist/*
    $ twine upload dist/*
    Uploading distributions to https://upload.pypi.org/legacy/
    Enter your username: qa.yw
    Enter your password: 
    Uploading isOddNum-1.0.0.tar.gz
    100%|███████████████████████████████████████████████████████████████████████████████████████| 3.49k/3.49k [00:02<00:00, 1.70kB/s]
    
    View at:
    https://pypi.org/project/isOddNum/1.0.0/

    1. 安装
    $ pip3 install isOddNum
    Requirement already satisfied: isOddNum in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (1.0.0)¥

    10.2.6 增加README.md

    import setuptools
    
    with open("README.md", "r", encoding="utf-8") as fh:
        long_description = fh.read()
    setuptools.setup(
          name='lib-name',
          version='1.0',
          author='',
          author_email='',
          description='',
          long_description=long_description,
          long_description_content_type="text/markdown",
          url='',     
          packages=setuptools.find_packages(),
          data_files=[('diractory',['file'])],   
          install_requires=[
            'tensorflow>=2.2.0',
            'keras>=2.4.0',
            'numpy',
        ]   
        )

  • 相关阅读:
    一个老鸟发的公司内部整理的 Android 学习路线图
    Android studio button 按钮 四种绑定事件的方法
    Android 运行时权限处理(from jianshu)
    Android 运行时权限处理
    Android studio 快捷键
    Android Toast:是一个类,主要管理消息的提示
    Android开发使用软件
    重装系统,打开VS进行程序调试运行的时候 Unable to find manifest signing certificate in the certificate store
    dev gridview指定单元格cell获取坐标
    IOS 杂笔-3 (property参数)
  • 原文地址:https://www.cnblogs.com/iloverain/p/16515083.html
Copyright © 2020-2023  润新知