Wheel安装
pip install wheel
模块目录结构说明
setup.py:打包配置文件 setup.cfg:包含了构建时候的一些默认参数,无可以不添加该文件 MANIFEST.in:额外需要打包的文件,无可以不添加该文件 REANME.md:项目说明文档 LICENSE.txt:项目许可说明文件,无可以不添加该文件
setup.py参数介绍
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文件中
例1
[Public.py] #!/usr/bin/env python # -*- coding: utf-8 -*- import os import logging import traceback class Log(object): #日志 path=os.path.abspath('./log') if not os.path.isdir(path): os.mkdir(path) logger = logging.getLogger("mylogging") data=datetime.date.today() filename=os.path.join(path,str(data)+".log") fmt='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s' @classmethod def error(cls,message): logging.basicConfig(level=logging.ERROR, format=cls.fmt,filename=cls.filename,filemode='a+') cls.logger.error(message) [test.py] #!/usr/bin/env python #-*- coding:utf-8 -*- import sys #sys.path.append('../subb') #from Public import Log from pu.subb.Public import Log class Add: def __init__(self): self.log=Log() def add(self,a,b): return a+b def print_error(self,msg): self.log.error(msg) if __name__ == '__main__': # 用来进行测试 add = Add() d=add.add(2,3) print(d) add.print_error('error')
2.新建setup.py
#from distutils.core import setup, find_packages from setuptools import find_packages from setuptools import setup setup( name='pu', version='1.2.0', description="option excel", author='liboye', url="http://www.csdn.net", #程序的官网地址 license="LGPL", #支持的开源协议 packages= find_packages(), #需要处理的包目录 #packages= ['pu.suba','pu.subb'], install_requires = ["openpyxl"], #安装依赖包 #scripts=["scripts/test.py"], #安装时需要执行的脚步列表 py_modules=['pu.suba.test', 'pu.subb.Public'] #打包的.py文件 # 此项需要,否则卸载时报windows error,exe安装 #zip_safe=False )
3.构建模块
python setup.py build
4.模块使用
python setup.py install #[安装] easy_install -m 包名 #[模块卸载] python setup.py --help-commands #[获取帮助] python setup.py sdist #[为模块创建一个源码包(*.tar.gz)] python setup.py bdist_wheel #[制作python包为wheel文件] python setup.py bdist_wininst #[dist目录生成一个exe文件] python setup.py bdist --help-formats #[查看所有格式的支持]
5上传pypi
需要事先有账号密码,注册地址:https://pypi.org/
有了账号密码在上传的时候输入即可
twine upload dist/*