首页 > 编程语言 > 详细

python实现模块打包发布

时间:2021-05-27 11:47:53      阅读:25      评论:0      收藏:0      [点我收藏+]

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/*

 

python实现模块打包发布

原文:https://www.cnblogs.com/boye169/p/14815448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!