当前位置 : 主页 > 编程语言 > python >

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

来源:互联网 收集:自由互联 发布时间:2022-06-15
10.1 PyPi是什么? PyPi 是 Python Package Index 的首字母简写,其实表示的是 Python 的 Packag 索引,这个也是 Python 的官方索引。 你需要的包(Package)基本上都可以从这里面找到。作为开源软件,


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)是指一个文件集合,这些文件联合在一起允许你构建、打包、和发布你的代码。

  • 为模块创建一个文件夹 isOdd,将isOdd.py复制到文件夹。
  • 在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文件。

  • 构建一个发布文件,在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)
  • 将发布安装到你的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本地副本上。

    教师妹学python之十:共享代码_元数据

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

    build文件-新增的文件夹

    dist-发布包

  • 通过上述操作,你的模块已经可以在本地引用了。
  • 教师妹学python之十:共享代码_数据_02

    10.2.4 注册PyPi网站

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

    10.2.5 向PyPi上传代码

    方法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)>
  • 执行 python3 setup.py sdist upload
  • 方法2:

    使用twine上传你的项目

    pip3 install twine
  • python3 setup.py sdist
  • python3 setup.py sdist
  • 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/

    教师妹学python之十:共享代码_数据_03

    教师妹学python之十:共享代码_元数据_04

  • 安装
  • $ 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',
    ]
    )


    上一篇:Python 利用pandas写入excel二维数组
    下一篇:没有了
    网友评论