源码封装打包---setuptools

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 包名    即可调用

猜你喜欢

转载自blog.csdn.net/qq_36663518/article/details/107409207