Python全方位构建自己的第三方库--让别人pip install你的三方库

简介: 作为有一些Python经验的老司机来讲, 在实际项目中经常会封装一些特有的共有的功能使用, 一般这个py模块都在项目内容, 想拿出来在别的项目中使用需要复制拖拽功能模块, 并且不方便给别的老司机使用! 这个时候如果可以 通过 pip install xx 安装使用是不是就解决了这个弊端!<br> 作为小白来讲, 学完模块功能之后, 经常会有个困惑就是, 为什么pip install 是别的第三方库模块, 我自己写的模块能不能让别人也pip呢, 那么接下来我们就来想详细的来构建下属于自己的pip第三方库吧

Python全方位构建自己的第三方库--让别人pip install你的三方库

pip1.jpg

构建自己的第三方库整体需要以下6个步骤:

1. 第一步 成为Python官方库的开发者

2. 使用编辑器IDE实现自己的Python模块-库

3. setup设置

4. 根目录下新建README.md文件

5. 本地打包项目

6. 提交到pypi官网即可

7. 测试校验是否提交成功

1. 第一步 成为Python官方库的开发者

1.1 PyPi官网 https://pypi.org/

pypi1.png

1.2 注册账号

注册账号不需要手机号哟!

pypi2.png

1.3 激活邮箱

pypi3.png

2. 使用编辑器IDE实现自己的Python模块-库

IDE没有限制, 这里使用的是Pycharm

2.1 新建Python项目, 使用虚拟环境

pypi4.png

2.2 新建一个包,取名为你要上传的库的名字

pypi5.png

2.3 实现自己封装的主功能

pypi6.png

3. setup设置

项目根目录下新建setup.py文件, 此文件是打包的一些配置项, 大家可以根据自己的实际情况配置

"""A setuptools based setup module.
See:
https://packaging.python.org/guides/distributing-packages-using-setuptools/
https://github.com/pypa/sampleproject
"""

# Always prefer setuptools over distutils
from setuptools import setup, find_packages
import pathlib

here = pathlib.Path(__file__).parent.resolve()

# Get the long description from the README file
long_description = (here / "README.md").read_text(encoding="utf-8")

# Arguments marked as "Required" below must be included for upload to PyPI.
# Fields marked as "Optional" may be commented out.

setup(
 
    name="sampleproject",  # Required 项目名称
    version="2.0.0",  # Required 发布版本号
    description="A sample Python project",  # Optional 项目简单描述
    long_description=long_description,  # Optional 详细描述
    long_description_content_type="text/markdown",  # 内容类型
    url="https://github.com/pypa/sampleproject",  # Optional github项目地址
    author="A. Random Developer",  # Optional 作者
    author_email="author@example.com",  # Optional 作者邮箱
    classifiers=[  # Optional 分类器通过对项目进行分类来帮助用户找到项目, 以下除了python版本其他的 不需要改动
     
        "Development Status :: 3 - Alpha",
        # Indicate who your project is intended for
        "Intended Audience :: Developers",
        "Topic :: Software Development :: Build Tools",
        # Pick your license as you wish
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3 :: Only",
    ],
   
    keywords="sample, setuptools, development",  # Optional 搜索关键字
 
    package_dir={"": "src"},  # Optional 手动指定包目录
    
    packages=find_packages(where="src"),  # Required
   
    python_requires=">=3.7, <4",  # python 版本要求
 
    install_requires=["peppercorn"],  # Optional 第三方依赖库
   
    extras_require={  # Optional
        "dev": ["check-manifest"],
        "test": ["coverage"],
    },
  
    package_data={  # Optional       包数据
        "sample": ["package_data.dat"],
    },
 
    data_files=[("my_data", ["data/data_file"])],
    
    
    entry_points={  # Optional
        "console_scripts": [
            "sample=sample:main",
        ],
    },
   
    project_urls={  # Optional 和项目相关的 其他网页连接资源
        "Bug Reports": "https://github.com/pypa/sampleproject/issues",
        "Funding": "https://donate.pypi.org",
        "Say Thanks!": "http://saythanks.io/to/example",
        "Source": "https://github.com/pypa/sampleproject/",
    },
)

部分常用的参数配置含义

pypi7.png

以下是我codepay功能模块的配置内容

# setup.py

import setuptools
import pathlib

here = pathlib.Path(__file__).parent.resolve()
long_description = (here / "README.md").read_text(encoding="utf-8")

setuptools.setup(
    name="CodePay",
    version="1.0",
    author="LCF",
    author_email="1019197976@qq.com",
    description="codepy python library",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/codepay",
    packages=setuptools.find_packages(),
    license="Apache 2.0",
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3 :: Only",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",

    ],
    keywords="codepay, codepay_python",
)

4. 根目录下新建README.md文件

README.md 文件创建在根目录下, 主要是给使用者一些 使用说明和注意事项,方便长片描述用的

5. 本地打包项目

进入项目的根目录执行:python setup.py sdist

pypi8.png

6. 最后一步了😁--提交到pypi官网即可

6.1 安装twine库, 方便提交

pip install twine

pypi9.png

6.2 在项目根目录-使用 twine upload dist/* 指令进行提交

pypi9.png

7. PyPi官网查看和本地验证

7.1 PyPi官网查看

pypi11.png

7.2 本地验证

pip install CodePay -i https://pypi.org/simple 

pypi12.png

小贴士: 注意本地下载安装的时候, 很多老司机是修改过的pip的镜像源的, 因为我们是刚提交到PyPi官网的, 其他镜像源是不能快速同步到我们的新第三方库的, 所以 如果安装失败, 需要指定PyPi的默认镜像源下载安装!

相关文章
|
7天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
15天前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
28天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
12天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
38 3
|
12天前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
41 2
|
12天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
32 1
|
12天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
28 1
|
21天前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
25 2
|
21天前
|
数据采集 存储 机器学习/深度学习
构建高效的Python网络爬虫
【10月更文挑战第25天】本文将引导你通过Python编程语言实现一个高效网络爬虫。我们将从基础的爬虫概念出发,逐步讲解如何利用Python强大的库和框架来爬取、解析网页数据,以及存储和管理这些数据。文章旨在为初学者提供一个清晰的爬虫开发路径,同时为有经验的开发者提供一些高级技巧。
13 1
|
24天前
|
存储 人工智能 数据挖掘
Python编程入门:构建你的第一个程序
【10月更文挑战第22天】编程,这个听起来高深莫测的词汇,实际上就像搭积木一样简单有趣。本文将带你走进Python的世界,用最浅显的语言和实例,让你轻松掌握编写第一个Python程序的方法。无论你是编程新手还是希望了解Python的爱好者,这篇文章都将是你的理想起点。让我们一起开始这段奇妙的编程之旅吧!
20 3