发布你自己的 PyPI 包

我们都知道,通过 pip 可以很容易的管理各种 Python 的包。那么当你有了一份好的代码时,如何能把它发布出去,让所有人都能以这样的方式下载呢?只需要通过下面几个步骤就可以完成。

新建项目

以项目 praise 为例,目录结构应该至少是这样的

repo/
│  README.md
│  setup.cfg
│  setup.py
├─praise
│  │  __init__.py

其中repo是你项目的根目录,而其他文件的内容分别为

README.md

项目的介绍文件,和一般的开源项目没什么太多区别

setup.cfg

配置文件,内容为

[metadata]
description-file = README.md

setup.py

项目元信息,内容为

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

setup(
    name='praise',
    packages=['praise'],
    version='0.1',
    description='Praise it',
    author='foo',
    author_email='foo@bar.com',
    url='',
    download_url='',
    keywords=['foo', 'bar'],
    classifiers=[],
)

其中大部分都是直接的字面意思。如果有发布在 GitHub 等地方的话,可以把 url写成项目地址,download_url写 release 里的下载地址。

项目代码

所有的代码都在以项目为名称的目录里面,这里用的是 praise。如果我们在 __init__.py里有这样的代码

def foo():
    return "bar"

那么就可以这样使用

import praise
result = praise.foo()

本地安装

在项目根目录,通过下面的命令(注意最后的点号)

pip install -e .

就可以安装你的代码并进行测试了。其中-e表示以编辑模式 (editable mode) 安装,可以即时更新代码的情况, 方便开发和调试。

发布

本地测试完成,就可以进行发布了,具体过程如下:

注册 PyPI 账号

分别在正式版和测试版网站上注册账号,路径为

注册完成以后会收到确认邮件。

本地配置

在 home 目录下(Linux 为~, windows 为C:\Users\your_username\)建立.pypirc文件,填入以下内容

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=username
password=password

[pypitest]
repository=https://testpypi.python.org/pypi
username=test_username
password=test_password

其中用户名和密码要换成刚才注册时设置的

发布到测试源

python setup.py register -r pypitest
python setup.py sdist upload -r pypitest

然后就可以通过

pip install -i https://testpypi.python.org/pypi <package name>

来进行安装,测试

发布到正式源

python setup.py register -r pypi
python setup.py sdist upload -r pypi
*****
Written by Functor on 04 February 2017
Tags: [ python  PyPi  release  praise  package  pip  ]