Python程序发布到 PyPI

PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。PyPI推荐使用pip包管理器来下载第三方库。本文记录如何发布自己的程序到Pypi。

  1. 注册Pypi账号
  2. 编写setup.py文件
  3. 本地打包测试
  4. 发布到Pypi
注册Pypi账号

想要发布程序到Pypi必须到 https://pypi.org/ 申请Pypi账号

编写setup.py文件

setup.py文件用来描述了项目基础信息以及项目如何打包和运行
以下是一个简洁的例子 项目源码:https://github.com/vcancy/pypi-demo

注意:setup.py文件在项目根目录下

# -*- coding:utf-8 -*-
try:
    from setuptools import setup, find_packages
except:
    from distutils.core import setup
from codecs import open
from os import path

#版本号
VERSION = '0.0.1'

#发布作者
AUTHOR = "vcancy"

#邮箱
AUTHOR_EMAIL = "[email protected]"

#项目网址
URL = "https://github.com/vcancy/spider80s"

#项目名称
NAME = "pypidemo"

#项目简介
DESCRIPTION = "desc"

#LONG_DESCRIPTION为项目详细介绍,这里取README.md作为介绍
here = path.abspath(path.dirname(__file__))
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
    LONG_DESCRIPTION = f.read()

#搜索关键词
KEYWORDS = "demo"

#发布LICENSE
LICENSE = "MIT"

#包
PACKAGES = ["demo"]

#具体的设置
setup(
    name=NAME,
    version=VERSION,
    description=DESCRIPTION,
    long_description=LONG_DESCRIPTION,
    classifiers=[
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python',
        'Intended Audience :: Developers',
        'Operating System :: OS Independent',

    ],
    #指定控制台命令
    entry_points={
        'console_scripts': [
            'demo = demo:main',#pip安装完成后可使用demo命令调用demo下的main方法
        ],
    },
    keywords=KEYWORDS,
    author=AUTHOR,
    author_email=AUTHOR_EMAIL,
    url=URL,
    license=LICENSE,
    packages=PACKAGES,
    install_requires=[],#依赖的第三方包
    include_package_data=True,
    zip_safe=True,
)
本地打包测试
python setup.py sdist 

执行后会在项目下新建一个dist目录,里面会生成一个.gz后缀的压缩包

pip install dist/pypidemo-0.0.1.tar.gz 

通过该命令可以安装这个包

最后执行相关的命令测试是否正常

demo
发布到Pypi

上传生成的包,可以使用setuptools,或者twine上传,推荐使用twine上次,因为使用setuptools上传时,你的用户名和密码是明文或者未加密传输

1.通过setuptools上传

python setup.py sdist upload

2.twine上传

pip install twine

twine upload dist/pypidemo-0.0.1.tar.gz 

参考:
Python Packaging User Guide

你可能感兴趣的:(Python程序发布到 PyPI)