发布模块到pypi

如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index)。刚开始我以为要将代码打包放到PyPI上是一件非常复杂繁琐的事情,不过看过《Dive Into Python 3》的PACKAGING PYTHON LIBRARIES介绍(CHAPTER 16),并自己动手操作了一下,发现打包发布这个事情并没有想象中的那么有难度。为了方便其他朋友阅读的方便,就尝试写了这个博文,来记录下如何将自己写的Python代码打包上传到PyPI上。

第一步,打包

比如我现在有一个python文件,文件名叫jfbrequests,想要把这个文件发布到pypi,使用的时候直接pip install jfbrequests安装,我需要建立这样的目录结构:

jfbrequests/
    |
    +-- __init__.py
    |
    +-- myscripts1.py
    |
    +-- mysscripts2.py
    |
    +-- mymorescripts.py
    |

jfbrequests就是你的包名,该文件夹下必须包含__init__.py,可以把想要发布的代码放在这个里面

第二步,加料

想要把包发布到pypi,还需要重新改造一下,目录结构如下:

jfbrequests/
    |
    +-- jfbrequests/
    .       |
    .       +-- __init__.py
    .       |
    .       +-- myscripts1.py
    .       |
    .       +-- mysscripts2.py
    .       |
    .       +-- mymorescripts.py
    .       |
    .
    |

只是又加了一层文件夹,是不是很简单,接着往下走

第三步,终章

我们需要在最终版的目录结构中创建几个文件,先上代码,再解释

jfbrequests
    |
    +-- COPYING.txt
    |
    +-- README.txt
    |
    +-- MANIFEST.in
    |
    +-- README.rst
    |
    +-- setup.py
    |
    +-- jfbrequests
    .       |
    .       +-- __init__.py
    .       |
    .       +-- myscripts1.py
    .       |
    .       +-- mysscripts2.py
    .       |
    .       +-- mymorescripts.py
    .       |
    .
    |
    +-- docs/
    |
  • COPYING.txt: 就是授权文件,里面是你关于这个包的授权,比如:MIT license,那么你里面放入MIT License全文即可,如果你不清楚这个,完全可以不用写,但最好创建该文件
  • README.txt: 这个文件的作用相比都知道吧,不解释了
  • README.rst: 同上
  • MANIFEST.in: 内容可以写include COPYING.txt
  • setup.py: 核心文件,具体内容在下面讲
  • docs/: 这是个文件夹,放你的开发文档
    好了,目录已全部创建完成,接下来我问为setup.py添加内容

第四步,setup.py

import codecs
import os
import sys
try:
    from setuptools import setup
except:
    from distutils.core import setup

"""
打包的用的setup必须引入,

"""
def read(fname):
    return codecs.open(os.path.join(os.path.dirname(__file__), fname)).read()

NAME = "jfbrequests"  # 1,需要改:模块名

PACKAGES = ["jfbrequests", ]  # 2,需要改:模块名

DESCRIPTION = "this is a test package for packing python liberaries tutorial."  # 模块描述,可选改


LONG_DESCRIPTION = read("README.rst")

KEYWORDS = "test python package"  # 关键字,可选改

AUTHOR = "jiangfubang"  # 3,需要改:作者名

AUTHOR_EMAIL = "luckybang@163.com"  # 4,需要改:邮箱

URL = "https://github.com/jiangfubang/jfbrequests"  # 5,需要改:一般写模块的github地址

VERSION = "1.4.23"  # 6,需要改:版本号

LICENSE = "MIT"  # 授权方式,可选改


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',
    ],
    keywords = KEYWORDS,
    author = AUTHOR,
    author_email = AUTHOR_EMAIL,
    url = URL,
    license = LICENSE,
    packages = PACKAGES,
    include_package_data = True,
    zip_safe = True,
)

第五步,注册pypi账号,创建用户验证文件~/.pypirc

[distutils]
index-servers=pypi

[pypi]
repository = https://upload.pypi.org/legacy/
username = pypi用户名
password = pypi密码

第六步,发布相关命令

1. 检测所有文件配置是否正确
python setup.py check
输出:running check
2. 打包
python setup.py sdist
3. 注册
twine register dist/*
4. 上传
twine upload dist/*
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值