python封装wheel并上传pypi(可通过pip安装)

当你看到这篇文章的时候,说明你已经在python领域有所涉猎,已经不是当初的那个小白了。直接进入正题!本文做初次使用记录,随时更新

一、建立包结构

比如:我们想封装一个切图的功能,存放方式

project
   ├──slice
        ├──__init__.py
        ├──img_slice.py
   ├──setup.py

包也可以有多层结构:

project
   ├──slice
        ├──__init__.py
        ├──img_slice.py
        ├──utils
             ├──__init__.py
   ├──setup.py

将以上slice包移动到你需要的conda虚拟环境envs下,找到python的根site_packages文件夹内,然后就可以直接使用import导入以上包或者指定模块,python会按照包和模块搜索路径完成加载

上面这种方式和后面的安装本地wheel和pip安装原理是一样的

二、封装wheel

完善setup.py信息,里边包含了你要封装的wheel的所有信息

import setuptools #导入setuptools打包工具
 
# with open("README.md", "r", encoding="utf-8") as fh:
#     long_description = fh.read()
 
setuptools.setup(
    name="package-name", # 发布wheel包名    ----需修改
    version="0.0.1",    # 包版本号,便于维护版本
    author="Author",    # 作者,可以写自己的姓名
    author_email="[email protected]",    # 作者联系方式,可写自己的邮箱地址
    description="A small example package",  # 包的简述
    long_description='long_description',    # 包的详细介绍,一般在README.md文件内, 或者用字符串定义
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",  # 自己项目地址,比如github的项目地址
    # packages=setuptools.find_packages(),
    packages=['slicess']  # python项目文件夹的名字,安装包名。和name保持一致    ----需修改
    python_requires='>=3.6',    #对python的最低版本要求
)

三、创建本地wheel

3.1 安装setuptools和wheel

#安装或更新setuptools和wheel
python3 -m pip install  --upgrade setuptools wheel

3.2 打包并生成.whl文件

cd project
python3 setup.py bdist_wheel

运行完成后,会在project目录下生成两个文件夹,一个build文件夹,一个dist文件夹,生成的wheel就在dist文件夹中。

直接pip install 那个wheel即可pip install slice-0.0.1-py3-none-any.whl

四、上传至PyPi

4.1 首先,需要有个PyPi的账号
没有先注册,PyPi官网传送门。其实token名字和token value不用也行
4.2 安装twine

# 安装或更新twine
python3 -m pip install --user --upgrade twine

4.3 使用twine上传至PyPi

python3 -m twine upload dist/*

上传过程会提示输入用户名和密码,直接输入你注册时候的username和password 即可。
有两个注意事项:

  1. 有文章说在testpypi先测试,没问题再上传正式的pypi网址,这是可取的
  2. 有些文章建议在上传分发时,使用token名字和token value作为登录名字和密码,这个读者可自行决定,笔者是直接用注册的账户名和密码登录的。

4.4 安装线上的PyPi包

pip install --index-url https://pypi.org/simple/  slice

记得加上url,否则可能下载的时候找不到包。

五、版本更新

修改好自己的包版本内容后,修改setup.py中的版本号即可。

六、调用

import slice.img_slice as crop

input_dir = '/home/adt/Desktop/demo'
crop_size = 768

crop.img_crop(input_dir, crop_size)

如果不想在上传PyPi的时候输入密码,可以这样做:
在用户根目录下创建文件~/.pypirc,并写入以下内容

[distutils]
 index-servers=pypi 
[pypi]
repository = https://upload.pypi.org/legacy/
username = 你的用户名
password = 你的密码

你可能感兴趣的:(python,pip)