构建自己的Python包到Pypi

作者:matrix 发布时间:2023-04-28 分类:Python

安装构建工具

首先确保安装了setuptoolswheel。如果没有就运行以下命令安装:

$ pip3 install setuptools wheel twine

配置项目

目录结构可参考:

https://github.com/Hootrix/text-box-wrapper

项目中包含以下文件:

setup.py:包含项目的元数据和依赖关系。
README.md:项目的描述文件。
LICENSE:选择一个许可证并将其放在此文件中。
wrapper.py:自己定义的文件,包含功能代码
__init__.py 包定义,以及可引入的方法

配置setup.py

setup.py可配置作者、readme、仓库等信息

import os
from setuptools import setup, find_packages

with open(os.path.join(os.path.dirname(__file__), "README.md"), encoding="utf-8") as f:
    long_description = f.read()

setup(
    name="text-box-wrapper",
    version="0.1.5",
    description="A simple package to wrap text with ASCII art",
    author="Ho",
    author_email="wdzxnwo2r@mozmail.com",
    packages=find_packages(),
    install_requires=[
        "wcwidth"
    ],
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
    ],

    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/Hootrix/text-box-wrapper",

)

构建

$ python3 setup.py sdist bdist_wheel

说明:
将在dist的新文件夹中生成源代码和二进制分发文件

上传到Pypi

确保已经注册了PyPI账户

$ twine upload dist/*

正常操作输入pypi账户和密码即可完成推送

如果账户设置了两步验证可能需要使用api token

保存你的api token到~/.pypirc文件中,如果没有就自己新建

[pypi]
  username = __token__
  password = pypi-A1************bQ

执行推送后类似下面内容,就是完成了

$ twine upload dist/*

Uploading distributions to https://upload.pypi.org/legacy/
Uploading text_box_wrapper-0.1.0-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.4/8.4 kB • 00:01 • 777.3 kB/s
Uploading text-box-wrapper-0.1.0.tar.gz
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.3/8.3 kB • 00:00 • 799.3 kB/s

View at:
https://pypi.org/project/text-box-wrapper/0.1.0/

正常安装

$ pip3 install text-box-wrapper