小博客写写就烦了啊,虽然github免费啊,但是图片什么的整理好麻烦,又不想用太复杂的框架了,所以干脆附件了图片了都放七牛上了,当图床用了,不过每次都登录到上面再上传很麻烦啊,索性写了个小工具,上传然后返回链接,so方便啊,用的话点这里

后来加工了下,可以方便的支持多个bucket的操作,也可以支持目录以及多个文件的上传,尽量简单,慢慢完善,工具不多说了。写完了一个,发布出去是最好的选择了,如果有别人也用到了那就更棒了。
之前一直也没有发布过模块,感觉应该挺复杂的,不管了一点点来吧,发布python包可以有多种方法,distutils,setuptools等,鉴于setuptools可以算是前者的增强版,就用这个吧。
首先整理下自己代码的目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
▶ tree qnupload 
qnupload
├── etc
│   └── qnupload
│   └── qnupload.conf
├── LICENSE
├── MANIFEST.in
├── README.rst
├── setup.py
└── src
└── qnupload
├── __init__.py
└── qnupload.py

首先对自己的源码选择好license,写好自述文件(README),MANIFEST.in用来指定包额外需要的文件,这里我用来包含配置文件的目录etc。最主要的是包的根目录下的安装脚本setup.py了。
具体setup.py中的参数可以参考这里,和这里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#-*- encoding: UTF-8 -*-
from setuptools import setup, find_packages

VERSION = '1.2.3'

setup(
# 指定包名称
name = 'qnupload',

# 版本号
version = VERSION,

# 包的基本描述,如果需要详细描述,可以在long_description中详细介绍
description = 'Tool to upload file to Qiniu cloud'

# 包的关键字
keywords = 'python qiniu upload cli',

# 作者信息
author = 'cheneydc',
author_email = 'cheneydc@gmail.com',

# 包的主页
url = 'https://github.com/cheneydc/qnupload',

# 指定LICENSE
license='MIT',

# 指定必要的包的目录,详细请查看[文档](https://docs.python.org/2/distutils/setupscript.html#listing-whole-packages)
package_dir = {'':'src'},

# 通过find_packages可以方便的查找包,支持两个策略,include和exclude
# 详细请参考[文档](https://pythonhosted.org/setuptools/setuptools.html#using-find-packages)
packages=find_packages('src'),

# 这个可以包含所有在包中找到的数据文件,前提是文件在MANIFILEST.in中指定
include_package_data=True,

# 我的包是一个命令行工具,这里指定工具名称与其对应的模块代码,安装包后会自动生成相应的执行文件
entry_points={
'console_scripts':[
'qnupload = qnupload.qnupload:main',
]
},

# 依赖
install_requires=[
'qiniu',
],
data_files=[
('/etc/qnupload', ['etc/qnupload/qnupload.conf']),
],
)

setup.py完成就可以在本地安装测试下了:

1
python setup.py install

如果想上传包到pypi的话,现在pypi上进行注册(有一个测试服务器testpypi,如果使用的话需要单独进行注册)

在本地的~目录下建立.pypirc文件,主要填写注册服务器的用户名以及密码进行验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[distutils]
index-servers =
pypi
pypitest

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

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

进行提交:

1
2
sudo python setup.py register -r pypi    
sudo python setup.py sdist upload -r pypi

这样就将自己的包提交到pypi上了,可以通过easy_instal和pip进行安装啦。