python distutils、setuptools打包第三方库

1. 项目目录

python distutils、setuptools打包第三方库_第1张图片

|-- src   # 引用时的包名,可随意修改;
|	-- http  # 子类包名,可随意修改
|		--__init__.py
|		-- xxx.py
|	--__init__.py
|	--xxx.py
|--readme.md
|--setup.py  # 打包信息
  • 例如上命名方式,打包后引用时为
import src
import src.xxx
import src.http
import src.http.xxx
  • xxx.py文件内写函数方法即可,例如
# -*- coding: utf-8 -*-


def src_hello_word():
    print('调用src/hello_word.py中方法')


class SrcHelloWord(object):
    def __init__(self):
        pass

    def src_hello_word_class(self):
        print('调用src/hello_word.py中class内方法')

2.打包

打包可以使用distutils、setuptools方式,两种不同的方式主要是在setup.py文件的编写差异

打包方式一:distutils

简易模版如下:

# -*- coding: utf-8 -*-
from distutils.core import setup

setup(
    name='example-pkg-YOUR-USERNAME-HERE',
    version='0.0.1',
    packages=['src', 'src.http']  # 此处报名需要罗列,不做罗列时无法import引用
)

执行打包,执行如下命令后会生成一个dist的文件夹,文件夹下有一个.tar.gz的压缩包即为最终打包文件

python setup.py sdist

包安装

  • 可以将该包上传至pypi,即可直接pip install安装
  • 直接解压.tar.gz压缩包安装,解压后执行install即可
python setup.py install

直接解压安装的方式,该模块安装到标准库的制定路径下,卸载时需要删除标准库中整个模块文件夹以及.egg文件
在这里插入图片描述

打包方式二:setuptools(distutils升级版)

模版如下:

# -*- coding: utf-8 -*-
import os
import setuptools
 
# 如果readme文件中有中文,那么这里要指定encoding='utf-8',否则会出现编码错误
with open(os.path.join(os.path.dirname(__file__), 'README.md'), encoding='utf-8') as readme:
    README = readme.read()
 
# 允许setup.py在任何路径下执行
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
 
setuptools.setup(
    name="example-pkg-YOUR-USERNAME-HERE", # 库名,需要在pypi中唯一
    version="0.0.1",                       # 版本号
    author="Example Author",               # 作者
    author_email="[email protected]",     # 作者邮箱(方便使用者发现问题后联系我们)
    description="A small example package", # 简介
    long_description=README,              # 详细描述(一般会写在README.md中)
    long_description_content_type="text/markdown",  # README.md中描述的语法(一般为markdown)
    url="https://github.com/pypa/sampleproject",   # 库/项目主页,一般我们把项目托管在GitHub,放该项目的GitHub地址即可
    packages=setuptools.find_packages(),    #默认值即可,这个是方便以后我们给库拓展新功能的
    classifiers=[                    # 指定该库依赖的Python版本、license、操作系统之类的
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    install_requires=[               # 该库需要的依赖库
        '你的库依赖的第三方库(也可以指定版本)',
        # exapmle
        'pyautogui',
        'Django >= 1.11, != 1.11.1, <= 2',
    ],
    python_requires='>=3.6',
)

打包方式

  • 安装包
pip3 install --user --upgrade setuptools wheel twine
  • 执行打包,执行如下命令后会生成一个dist的文件夹,文件夹下有一个.tar.gz的压缩包即为最终打包文件
python setup.py sdist bdist_wheel

包安装

  • 可以将该包上传至pypi,即可直接pip install安装
  • 直接解压.tar.gz压缩包安装,解压后执行install即可
python setup.py install

直接解压安装的方式,只会将.egg文件写入python的site-packages中(build执行文件存在解压后文件夹内),卸载时仅删除该.egg文件即可
在这里插入图片描述

你可能感兴趣的:(Python,python,开发语言)