当前位置: 首页 > article >正文

Setuptools vs Distutils:为什么它是Python构建系统的首选

Setuptools vs Distutils为什么它是Python构建系统的首选【免费下载链接】setuptoolsOfficial project repository for the Setuptools build system项目地址: https://gitcode.com/gh_mirrors/se/setuptoolsSetuptools 是 Python 生态中广泛使用的构建系统它在 Distutils 的基础上发展而来提供了更强大、更灵活的功能已成为 Python 项目构建和分发的首选工具。本文将深入对比 Setuptools 与 Distutils帮助你理解为什么 Setuptools 能取代 Distutils 成为行业标准。Distutils 的局限性为何需要更好的构建系统 Distutils 作为 Python 标准库的一部分曾是 Python 项目打包的基础工具。然而随着 Python 生态的发展它的局限性日益明显功能简单仅支持基本的打包和安装功能缺乏对现代项目需求的支持扩展性差难以添加自定义功能或集成第三方工具维护停滞作为已被 deprecated的项目Distutils 不再接收新功能更新根据 docs/deprecated/distutils-legacy.rst 中的说明As Distutils is deprecated, any usage of functions or objects from distutils is similarly discouraged, and Setuptools aims to replace or deprecate all such uses.Setuptools 的核心优势超越 Distutils 的强大功能 ✨Setuptools 在 Distutils 的基础上构建保留了其简单易用的特点同时增加了许多关键功能1. 自动依赖管理Setuptools 引入了install_requires参数能够自动解析和安装项目依赖这是 Distutils 完全不具备的功能。通过在setup.py或pyproject.toml中声明依赖Setuptools 可以确保项目在任何环境中都能正确安装所需的依赖包。2. 包发现与命名空间支持Setuptools 提供了强大的包发现机制通过find_packages()函数可以自动识别项目中的 Python 包无需手动列出所有模块。此外它还支持命名空间包允许创建跨多个分发的共享包命名空间。3. 插件化架构Setuptools 的插件化设计允许开发者通过 entry points 扩展其功能。这种灵活的架构使得第三方工具可以无缝集成如 pytest、sphinx 等工具都通过这种方式与 Setuptools 集成。4. 内置的 wheel 支持Setuptools 原生支持 wheel 格式这是一种预编译的二进制分发格式相比传统的源码分发它能显著加快安装速度并提高分发可靠性。通过bdist_wheel命令开发者可以轻松创建 wheel 包。从 Distutils 到 Setuptools 的演进之路 Setuptools 并非完全抛弃 Distutils而是在其基础上进行了改进和扩展。根据 NEWS.rst 中的记录Setuptools 经历了从依赖标准库 distutils 到整合其代码的过程Setuptools adopts distutils from the Python 3.9 standard library and no longer depends on distutils in the standard library. When importing setuptools or setuptools.distutils_patch, Setuptools will expose its bundled version as a top-level distutils package.这一转变确保了 Setuptools 可以独立发展不受 Python 标准库更新周期的限制同时保持了与 Distutils API 的兼容性使得现有项目能够平滑过渡。如何开始使用 Setuptools 基本安装要使用 Setuptools首先需要安装它。推荐使用 pip 进行安装pip install setuptools简单的项目结构一个典型的 Setuptools 项目结构如下my_project/ ├── setup.py ├── pyproject.toml └── my_package/ └── __init__.py基本的 setup.py 示例from setuptools import setup, find_packages setup( namemy_package, version0.1, packagesfind_packages(), install_requires[ requests2.25.0, ], )总结为何选择 Setuptools Setuptools 凭借其强大的功能、灵活性和广泛的社区支持已成为 Python 项目构建和分发的事实标准。它解决了 Distutils 的诸多局限性同时保持了向后兼容性使得从 Distutils 迁移变得简单。无论你是开发小型库还是大型应用Setuptools 都能提供所需的工具和功能帮助你更轻松地管理项目依赖、构建过程和分发流程。随着 Python 生态的不断发展Setuptools 将继续发挥其核心作用为 Python 开发者提供更好的构建体验。如果你想了解更多关于 Setuptools 的详细信息可以查阅官方文档docs/setuptools.rst。【免费下载链接】setuptoolsOfficial project repository for the Setuptools build system项目地址: https://gitcode.com/gh_mirrors/se/setuptools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

Setuptools vs Distutils:为什么它是Python构建系统的首选

Setuptools vs Distutils:为什么它是Python构建系统的首选 【免费下载链接】setuptools Official project repository for the Setuptools build system 项目地址: https://gitcode.com/gh_mirrors/se/setuptools Setuptools 是 Python 生态中广泛使用的构建…...

prompttools实验结果可视化:如何用图表分析LLM性能

prompttools实验结果可视化:如何用图表分析LLM性能 【免费下载链接】prompttools Open-source tools for prompt testing and experimentation, with support for both LLMs (e.g. OpenAI, LLaMA) and vector databases (e.g. Chroma, Weaviate, LanceDB). 项目地…...

5分钟上手ReportGenerator:开发者必知的命令行参数与配置技巧

5分钟上手ReportGenerator:开发者必知的命令行参数与配置技巧 【免费下载链接】ReportGenerator ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into h…...

从CSV到图表:sc-im处理数据的完整案例教程

从CSV到图表:sc-im处理数据的完整案例教程 【免费下载链接】sc-im sc-im - Spreadsheet Calculator Improvised -- An ncurses spreadsheet program for terminal 项目地址: https://gitcode.com/gh_mirrors/sc/sc-im sc-im是一款功能强大的终端电子表格程序…...

PyCaret时间序列预测:多步预测方法

PyCaret时间序列预测:多步预测方法 【免费下载链接】pycaret An open-source, low-code machine learning library in Python 项目地址: https://gitcode.com/gh_mirrors/py/pycaret PyCaret是一个开源的低代码机器学习库,提供了简单高效的时间序…...

如何用Stack-RPC构建分布式系统?5个关键步骤轻松掌握

如何用Stack-RPC构建分布式系统?5个关键步骤轻松掌握 【免费下载链接】stack-rpc-tutorials Stack-RPC 中文示例、教程、资料,源码解读 项目地址: https://gitcode.com/gh_mirrors/st/stack-rpc-tutorials Stack-RPC是一套功能强大的分布式系统开…...

3个实战案例带你掌握ast-hook-for-js-RE:猿人学、犀牛数据与极验破解

3个实战案例带你掌握ast-hook-for-js-RE:猿人学、犀牛数据与极验破解 【免费下载链接】ast-hook-for-js-RE 浏览器内存漫游解决方案(探索中...) 项目地址: https://gitcode.com/gh_mirrors/as/ast-hook-for-js-RE ast-hook-for-js-RE是…...

mmdetection模型部署最佳实践:推理引擎选择指南

mmdetection模型部署最佳实践:推理引擎选择指南 【免费下载链接】mmdetection open-mmlab/mmdetection: 是一个基于 PyTorch 的人工智能物体检测库,支持多种物体检测算法和工具。该项目提供了一个简单易用的人工智能物体检测库,可以方便地实现…...

My Text Processor 插件

My Text Processor 插件 【免费下载链接】aphrodite-engine PygmalionAIs large-scale inference engine 项目地址: https://gitcode.com/gh_mirrors/ap/aphrodite-engine 功能介绍 自定义文本处理插件,为输入文本添加前缀。 使用方法 在配置文件中设置&a…...

PyCaret数据转换:Box-Cox与Yeo-Johnson变换

PyCaret数据转换:Box-Cox与Yeo-Johnson变换 【免费下载链接】pycaret An open-source, low-code machine learning library in Python 项目地址: https://gitcode.com/gh_mirrors/py/pycaret PyCaret是一个开源的低代码机器学习库,提供了简单高效…...

synthetic-credit-default-syncora未来展望:下一代金融合成数据生成技术路线图

synthetic-credit-default-syncora未来展望:下一代金融合成数据生成技术路线图 【免费下载链接】synthetic-credit-default-syncora High-fidelity synthetic dataset for credit default modeling 项目地址: https://gitcode.com/gh_mirrors/sy/synthetic-credit…...

OpenTelemetry Operator安全配置:RBAC权限与TLS加密最佳实践

OpenTelemetry Operator安全配置:RBAC权限与TLS加密最佳实践 【免费下载链接】opentelemetry-operator Kubernetes Operator for OpenTelemetry Collector 项目地址: https://gitcode.com/gh_mirrors/op/opentelemetry-operator OpenTelemetry Operator是Kub…...

打造个性化编辑器:vim-moonfly-colors主题自定义高亮颜色的完整教程

打造个性化编辑器:vim-moonfly-colors主题自定义高亮颜色的完整教程 【免费下载链接】vim-moonfly-colors A dark charcoal theme for modern Neovim & classic Vim 项目地址: https://gitcode.com/gh_mirrors/vi/vim-moonfly-colors vim-moonfly-colors…...

Starry Night Art Gallery效果展示:手绘草图→精细油画转换案例

Starry Night Art Gallery效果展示:手绘草图→精细油画转换案例 1. 引言:当草图遇见AI,艺术创作的新可能 你有没有过这样的经历?脑子里闪过一个绝妙的画面,拿起笔在纸上快速勾勒,但想把这份潦草的灵感变成…...

Z-Image-Turbo-辉夜巫女完整指南:开源可部署+GPU显存优化+Gradio开箱即用

Z-Image-Turbo-辉夜巫女完整指南:开源可部署GPU显存优化Gradio开箱即用 1. 引言:当二次元创作遇上开源AI 如果你是一位动漫爱好者,或者对二次元角色创作感兴趣,最近是不是经常被各种精美的AI生成图刷屏?特别是那些风…...

Qwen3-4B-Thinking-GGUF高性能部署:vLLM张量并行+PagedAttention显存优化详解

Qwen3-4B-Thinking-GGUF高性能部署:vLLM张量并行PagedAttention显存优化详解 1. 引言:为什么你的大模型部署又慢又占内存? 如果你尝试过在本地部署一个4B参数的大语言模型,大概率会遇到这样的场景:模型加载慢如蜗牛&…...

sql函数总结(成绩在于平时,成功在于积累)最终版

1、有时间了总结一下,下面每个函数的应用,每个函数的应用可以举一反三。 1.1、datediff(只支持天)与timestampdiff(支持任何单位) 1.2、curdate,curtime,date(提取年月日…...

Local Moondream2效果实测:多场景图像内容识别准确率分析

Local Moondream2效果实测:多场景图像内容识别准确率分析 1. 核心功能介绍 Local Moondream2是一个基于Moondream2构建的超轻量级视觉对话Web界面,它能让你的电脑真正拥有"眼睛"。这个工具可以对你上传的任何图片进行详细描述、反推绘画提示…...

Sionna完全指南:下一代物理层研究的终极开源工具库

Sionna完全指南:下一代物理层研究的终极开源工具库 【免费下载链接】sionna Sionna: An Open-Source Library for Next-Generation Physical Layer Research 项目地址: https://gitcode.com/gh_mirrors/si/sionna Sionna是一个基于TensorFlow构建的开源Pytho…...

突破远程文件壁垒:sshfs核心功能与多线程技术解析

突破远程文件壁垒:sshfs核心功能与多线程技术解析 【免费下载链接】sshfs File system based on the SSH File Transfer Protocol 项目地址: https://gitcode.com/gh_mirrors/ssh/sshfs sshfs是一款基于SSH文件传输协议(SFTP)的文件系…...

CycleGAN-TensorFlow实战教程:从环境搭建到模型训练的完整步骤

CycleGAN-TensorFlow实战教程:从环境搭建到模型训练的完整步骤 【免费下载链接】CycleGAN-TensorFlow An implementation of CycleGan using TensorFlow 项目地址: https://gitcode.com/gh_mirrors/cy/CycleGAN-TensorFlow CycleGAN-TensorFlow是一个基于Ten…...

YOLO12模型生命周期管理:训练→验证→部署→监控→迭代的DevOps闭环

YOLO12模型生命周期管理:训练→验证→部署→监控→迭代的DevOps闭环 1. 引言:现代目标检测模型的完整生命周期 在人工智能快速发展的今天,目标检测模型已经广泛应用于各个领域。YOLO12作为Ultralytics于2025年推出的最新实时目标检测模型&a…...

nlp_structbert_sentence-similarity_chinese-large代码实例:扩展支持CSV批量句子对相似度计算

nlp_structbert_sentence-similarity_chinese-large代码实例:扩展支持CSV批量句子对相似度计算 你是不是也遇到过这样的问题?手里有一大堆句子对,需要批量计算它们的相似度,但一个个手动输入太麻烦,用脚本处理又得写一…...

CogVideoX-2b性能瓶颈分析:IO等待、显存交换、Decoder耗时定位方法

CogVideoX-2b性能瓶颈分析:IO等待、显存交换、Decoder耗时定位方法 1. 引言:当你的“AI导演”卡壳了 想象一下,你正兴奋地输入一段文字,期待服务器这位“AI导演”为你生成一段精彩的短视频。界面简洁,操作简单&#…...

chandra灰度发布流程:新版本逐步上线的风险控制

chandra灰度发布流程:新版本逐步上线的风险控制 1. 引言:为什么新版本上线需要“灰度”? 想象一下,你开发了一个功能强大的OCR工具,经过无数个日夜的测试,终于准备发布一个重大更新。这个新版本承诺识别准…...

SmolVLA实战案例:结合RealSense D435i深度相机的3D动作增强方案

SmolVLA实战案例:结合RealSense D435i深度相机的3D动作增强方案 1. 项目背景与核心价值 想象一下,你有一个机器人手臂,你想让它“拿起那个红色的方块,放进蓝色的盒子里”。传统方法可能需要你写一堆复杂的代码,告诉它…...

Z-Image-GGUF入门必看:从零搭建阿里通义AI绘图环境,支持中英文提示词

Z-Image-GGUF入门必看:从零搭建阿里通义AI绘图环境,支持中英文提示词 1. 项目简介:你的第一台AI画师 想象一下,你只需要用文字描述,就能让电脑为你画出一幅精美的画作。无论是“樱花盛开的富士山”,还是“…...

DeepSeek-OCR-2部署教程:HTTPS反向代理+Basic Auth保障WebUI生产安全

DeepSeek-OCR-2部署教程:HTTPS反向代理Basic Auth保障WebUI生产安全 1. 为什么需要安全部署DeepSeek-OCR-2? 如果你正在考虑将DeepSeek-OCR-2投入实际生产环境,那么安全部署就是你必须面对的第一个问题。想象一下这个场景:你的O…...

Mask R-CNN高级应用:多类别实例分割与视频处理实战

Mask R-CNN高级应用:多类别实例分割与视频处理实战 【免费下载链接】Mask_RCNN Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow 项目地址: https://gitcode.com/gh_mirrors/ma/Mask_RCNN Mask R-CNN是一款基于Keras和T…...

SAM 2架构解析:Transformer与流式内存如何实现实时视频处理

SAM 2架构解析:Transformer与流式内存如何实现实时视频处理 【免费下载链接】sam2 The repository provides code for running inference with the Meta Segment Anything Model 2 (SAM 2), links for downloading the trained model checkpoints, and example note…...