python打包到pypi小结

   若是你写了一个python库,想让别人快速使用你的库,最简单的方式就是使用python官方出品的库托管网站pypi了。

   pypi的全称是Python Package Index,是python的一个软件仓库。pypi能够帮助你找到和安装由社区开发和共享的python库。包的做者可使用pypi来分发和共享其所开发的python库。以下图1是pypi的首页,能够看到pypi已经拥有近30w的用户以及超过16w的项目。

图1:pypi首页

   1.通常来讲,你发布的库中须要有一个setup.py文件,该文件主要包括库的各类信息,好比描述,做者,依赖以及各个模块等等。setup.py的编写能够参考以下资料:

若是你的python项目比较复杂,包含了多个层级的复杂的模块,你能够参考下面的blog来编写setup.py的packages选项html

附我的项目NetCloud的setup.py示例:python

#!/usr/bin/env python
# coding=utf-8
from setuptools import setup

setup(
    name="NetCloud",
    version="1.0.2",
    description='''网易云音乐综合爬虫,能够实现:
                    1.对于网易云音乐评论以及用户信息的爬取,而且可视化展现;
                    2.支持模拟登陆,提供包括音乐,歌手,歌单,dj等全方位的api支持''',
    author='lyrichu',
    author_email='lyrichu@foxmail.com',
    url = "http://www.github.com/Lyrichu/NetCloud",
    maintainer='lyrichu',
    maintainer_email='lyrichu@foxmail.com',
    packages=['netcloud.analyse','netcloud.crawler',
              'netcloud.login','netcloud.util',
              'netcloud.demo','netcloud.test'],
    package_data={'netcloud.util': ['source/*']},
    install_requires=[
        'pycrypto',
        'requests',
        'pyecharts',
        'pandas',
        'jieba',
        'wordcloud',
        'scipy'
        ]
)

上面编写的setup.py中尤为须要注意的是packagespackage_data两个参数,这两个参数分别决定了python库模块的结构以及资源文件的打包。

   2.编写好了setup.py文件以后,可使用

python setup.py install

命令将pyhton库安装到本地,可是若是须要将库上传到pypi进行托管的话,则须要将库代码以及资源文件进行统一打包,打包通常有多种打包格式,常见的有源码包(.tar.gz文件)和预编译跨平台包(.whl文件),源码包以及预编译包的打包命令以下:

# 源码包,这会获得一个.tar.gz的文件
python setup.py sdist build
# 预编译包,这会获得一个.whl的文件
python setup.py bdist_wheel --universal

   3.上传到pypi

在你上传打包文件到pypi以前,你应该先去注册一个pypi的帐号。这个很简单,直接去官网注册就能够了。上传到pypi有两种方式:

  • 使用setuptools工具,具体命令以下:
# 上传源码包
python setup.py sdist upload
# 上传预编译包
python setup.py bdist_wheel upload
  • 使用twine工具git

    简单来讲,相比setuptools,twine是一个更加安全和强大的pypi包发布工具,具体介绍和用法能够参考官方文档。

    twine 上传到pypi的命令以下:

# 首先安装twine
sudo pip install twine
# 上传打包好的文件到pypi
twine upload dist/*

twine上传的过程当中会提示你输入pypi的用户名和密码,直接按照提示输入便可。正常状况下你就能够成功发布你的pyhton库了。
发布完成以后,你就可使用pip命令安装你本身的库了,你能够试着安装并测试一下你的库在本机是否能够正常工做。github

相关文章
相关标签/搜索