Please enable Javascript to view the contents

怎样打包一个 Python 包,并上传到 PyPi

 ·  ☕ 2 分钟

最近笔者在思考,怎样提高开发效率。从网络爬虫到数据处理,然后到人工智能。Python 的强大之处在于:拥有一大批开箱即用的工具包,不必重复造轮子,极大地提高了开发的效率。那么为何不将项目中的功能模块化,打包成可复用的 Python 包呢?本文主要讲的是怎样将一个功能打包成 Python 包,并上传到 PyPi。

1. 首先得有一个 Python 包

在 Python 开发的过程中,可以将功能非常明确的模块分离出来,作为一个单独的 Python 包。这样不仅有利于模块的维护和升级,更重要的是在项目开发的过程中,可以复用这些 Python 包。

最近笔者的一个项目中,需要对 Django View 进行访问权限的控制。Django 自带的
Permission 提供表级别的权限控制,django-guardian 提供对象级别的权限控制。但是,这个项目中并没有 Model,数据完全来自第三方接口。在 GitHub 上搜索无果之后,笔者决定开发一个基于 View 粒度的权限控制 Django App。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
django_view_permission
├── admin.py
├── apps.py
├── __init__.py
├── management
│   ├── commands
│   │   ├── clearviewpermission.py
│   │   └── __init__.py
│   └── __init__.py
├── middleware.py
├── migrations
│   ├── 0001_initial.py
│   └── __init__.py
├── models.py
├── settings.py
├── singnals
│   ├── handlers.py
│   ├── __init__.py
├── utils.py
├── LICENSE
├── MANIFEST.in
├── README.md
└── setup.py

2. 打包源码

可以使用下面的命令打包源代码:

1
python setup.py sdist

这样在当前目录的 dist 文件夹下,就会多出一个以 tar.gz 结尾的包。

3. 上传包

3.1 注册账户

访问:https://pypi.python.org/pypi ,注册自己的账户 yourname:yourpassword。

3.2 创建 .pypirc 配置文件

如果不配置 .pypirc 文件,上传包到 PyPi 时会提示 403 错误。.pypirc 文件用于上传包到 PyPi 时,验证权限。在用户根目录下创建文件 $HOME/.pypirc,内容如下:

1
2
3
4
5
6
7
8
[distutils]
index-servers =
    pypi

[pypi]
repository=https://upload.pypi.org/legacy/
username=[your_username]
password=[your_password]

3.3 上传source 包

1
python setup.py sdist upload

3.5 安装测试

1
2
3
4
5
6
pip install django_view_permission
Collecting django_view_permission
  Downloading django_view_permission-0.0.1.tar.gz
Installing collected packages: django-view-permission
  Running setup.py install for django-view-permission ... done
Successfully installed django-view-permission-0.0.1

微信公众号
作者
微信公众号