开源Python库 2017-05-17 # 开源Python库 Python 一个很受人欢迎的原因之一是其有很丰富的第三方库,到本文开始写的时候已经在[PyPI](https://pypi.python.org/pypi) 上有108298个第三方包提供。有人还对第三方库做了很好的总结[Awesome Python](https://awesome-python.com/) 那如何开源自己的Python 包,要注意些什么,这些在Python 的[官方文档](https://docs.python.org/3/distributing/index.html#choose-a-name-for-my-project)有很详细的介绍。我简单总结在此。 ## 基本概念 * [Python Package Index](https://pypi.python.org/pypi) 是Python 包管理仓库,就像Java 的Maven Repository .pip 是官方推荐的包管理工具.使用Python 2 >=2.7.9 or Python 3 >=3.4 的版本不需要手动安装pip ,如果使用[virtualenv](https://packaging.python.org/key_projects/#virtualenv) 或者[Pyenv](https://packaging.python.org/key_projects/#venv) 也不用自己手动安装。如果需要手动安装,有多中方式,如果是linux 可以使用系统包管理工具,也可以下载[get-pip.py](https://bootstrap.pypa.io/get-pip.py)和pip 的详细使用可参考其[文档](https://pip.pypa.io/en/stable/). 另外如果在一台机器上有多个Python 环境,入过默认环境是Python2 那Python3的包管理使用pip3,反过来也行,意思就是多环境下pip 是不共享的。 * 构建工具,distutils已经被淘汰了,官方推荐使用构建在其至少的setuptools 。 * wheel 包,这是Python 包的二进制形式,其好处是无平台依赖,不需要在本地构建。 ## 发布自己的包 和非发布的项目的区别是要对项目进行写配置。pip 在自动安装的时候我想它使用的是```python setup.py install ``` 这样的命令。 setup.py 存在于项目的根目录下,setup.py中会包含```setup()```公告函数,默认参数会写在setup.cfg 中,具体例子可查看[ PyPA sample project](https://github.com/pypa/sampleproject),其他配置相关参考[文档](https://packaging.python.org/distributing/) 下一步注册PyPA的账号,上传项目到PyPI具体可参考[文档](https://packaging.python.org/distributing/#uploading-your-project-to-pypi) ## 项目命名 发现这样的博客没什么自己的东西,贴了不少链接,算是个知识整理过程。 >检查PyPI是否存在相同的包名 检查GitHub, BitBucket, 等网站是否存在相同名称的项目 在搜索引起中检查你确定的名字会有什么样的检索结果 避免使用特别常见的词,有奇异的词,不然其他人很难搜索到你的项目。