使用 setuptools构建源码包的两种方式

一、Python 项目结构

我用的是pycharm,项目结构案例如下:
在这里插入图片描述
本文分别使用两种python 打包的方式,使用 setup.pypyproject.toml
在使用前请将 pip 和 setuptools 更新到最新

pip install --upgrade setuptools
pip install --upgrade pip

hellow.py 中文件内容

def say_hello():
    print("hello")

main.py 中的文件内容

from .hellow import say_hello


def main():
    say_hello()

二、使用setup.py 打包

1. 编写setup.py 文档
import setuptools  # noqa

setuptools.setup(
    name="hello"
    author="yangtze_lv",
    version="1.0",
    author_email="yangtze_lv@163.com",
    packages=setuptools.find_packages(where="src", include="package*"),
    python_requires=">=3.8",
    install_requires=[
        "setuptools==65.3.0",
        "wheel==0.37.1",
        "opencv-contrib-python==4.5.5.62",
        "opencv-python==4.5.5.62",
        "matplotlib==3.5.3",
        "numpy==1.23.2",
        "matplotlib==3.5.3"
    ],
    entry_points={
        'console_scripts': [
            'apap = package.main:main',
        ]

    }
)
  • author 和 author_email 为作者信息
  • packages 中where 指要打包的目标文件夹, include指要把该文件夹下的哪些包给打包
  • install_requires 为 用到的模块
  • python_requires 为 python 版本
  • entry_points 在 后面 install 后会生成一个可运行的文件

其他参数可参考文档:Packaging and distributing projects — Python Packaging User Guide

2. 构建包
python setup.py sdist

可以指定打包的文件类型

python setup.py sdist --format=zip,tar

如果要打包为 whl 文件,需要 安装 wheel 库,命令行输入

在打包文件后会得到一个三个文件夹
在这里插入图片描述在这里插入图片描述
egg-info 记录了一下源码包的相关信息
whl 解压后则是源码文件

  1. 包的安装
    一种方式是将 dist 下的 二进制包解压后,里面会有 setup.py 文件,切换到解压后的目录命令行输入
pip install setup.py 

第二种方式是通过 pip 直接安装

pip install dist/hello-1.0-py3-none-any.whl

二、使用 pyproject.toml

在使用此方式前需要更新 build

pip install --upgrade build

pyproject.toml 文件内容

[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
#...
[project]
# ...
name = "apap"
version = "1.0"
requires-python = ">=3.8"
authors = [
    { email = "yangtze_lv@163.com" },
    { name = "Wenchao Lv" }
]
dependencies = [
    "setuptools==65.3.0",
    "wheel==0.37.1",
    "opencv-contrib-python==4.5.5.62",
    "opencv-python==4.5.5.62",
    "matplotlib==3.5.3",
    "numpy==1.23.2",
    "matplotlib==3.5.3"
]
# ...
[tool.setuptools.packages.find]
where = ["src"]
include = ["apap"]

[project.scripts]
apap = "apap.main:main"

基本参数于setup 差不多,需要注意的是 author和 email 部分,详细参数见文档 pyproject.toml 案例
构建包
在构建前更新 build

pip install --upgrade build

命令行输入

python -m build

会自动识别当前项目下存在的 pyproject.toml 和 setup.py 文件,生成文件后的安装方式与setup 中的一致
当 setup.py 和 pyproject.toml 文件同时存在时,使用build的方式 pyproject 中的内容会被setup.py 中的覆盖,而使用第一种方式则相反,注意在build 的时候不要挂翻墙软件,会报错
在构建完后,在命令行直接输入 apap 会进入设定的函数中

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值