1.创建个人项目
创建项目结构如下:
setuptools_demo/
├── demo
│ └── __init__.py
└── setup.py
setup.py内容如下:
from setuptools import find_packages,setup
setup(
name = 'demo',
version = '0.1',
packages = find_packages(),
)
__init__.py的内容如下:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def my_demo():
print "This is a demo package!"
if __name__ == '__main__':
my_demo()
2.执行打包命令
cd setuptools_demo
python setup.py bdist_egg
3.执行命令安装包
python setup.py install
4.导入包并使用它
import demo
demo.my_demo()
5.其他打包方式
进入到setup.py所在目录执行以下命令
python setup.py bdist_wheel #打包为whl文件
python setup.py sdist #打包为tar.gz文件
打包后在dist目录下就可以找到打包后的文件
6.setup相关参数
name : 打包后包的文件名
version : 版本号
author : 作者
author_email : 作者的邮箱
py_modules : 要打包的.py文件
packages: 打包的python文件夹
include_package_data : 项目里会有一些非py文件,比如html和js等,这时候就要靠include_package_data 和 package_data 来指定了。package_data:一般写成{‘your_package_name’: [“files”]}, include_package_data还没完,还需要修改MANIFEST.in文件.MANIFEST.in文件的语法为: include xxx/xxx/xxx/.ini/(所有以.ini结尾的文件,也可以直接指定文件名)
license : 支持的开源协议
description : 对项目简短的一个形容
ext_modules : 是一个包含Extension实例的列表,Extension的定义也有一些参数。
ext_package : 定义extension的相对路径
requires : 定义依赖哪些模块
provides : 定义可以为哪些模块提供依赖
data_files :指定其他的一些文件(如配置文件),规定了哪些文件被安装到哪些目录中。如果目录名是相对路径,则是相对于sys.prefix或sys.exec_prefix的路径。如果没有提供模板,会被添加到MANIFEST文件中。
7.如包内有要读取的文件,应获取文件绝对路径
#获取数据文件的绝对路径
cur_dir = os.path.abspath(os.path.dirname(__file__))
file = os.path.join(cur_dir,'yourfilename')
8.他人调用
下载tar.gz压缩包,解压后进入文件夹下,运行 python setup.py install进行安装。
安装后,import 包名 即可调用