最近笔者在思考,怎样提高开发效率。从网络爬虫到数据处理,然后到人工智能。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. 打包源码
可以使用下面的命令打包源代码:
这样在当前目录的 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
|