前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教师妹学python之十:共享代码

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

作者头像
互联网金融打杂
发布2022-08-01 13:14:28
3850
发布2022-08-01 13:14:28
举报

10.1 PyPi是什么?

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

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

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

安装模块的指令:

代码语言:javascript
复制
pip install yfinance

10.2 共享你的代码

10.2.1 函数转换为模块

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

代码语言:javascript
复制
#!/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"文件,这个文件包含有关发布的元数据。
代码语言:javascript
复制
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
代码语言:javascript
复制
$ 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
代码语言:javascript
复制
$ 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
代码语言:javascript
复制
$ 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上传你的项目

代码语言:javascript
复制
pip3 install twine
  1. python3 setup.py sdist
代码语言:javascript
复制
python3 setup.py sdist
  1. twine upload dist/*
代码语言:javascript
复制
$ 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. 安装
代码语言:javascript
复制
$ 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

代码语言:javascript
复制
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',
    ]   
    )
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 10.1 PyPi是什么?
  • 10.2 共享你的代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档