泰安企业建站公司平台/国内搜索引擎网站

泰安企业建站公司平台,国内搜索引擎网站,长沙企业网站建设,wordpress 关闭自动升级文章目录 前言简介一、核心功能1.依赖管理自动安装依赖版本约束额外依赖组命令行工具插件系统 2.开发模式安装3.资源文件管理4.Egg 分发(已逐渐被 Wheel 取代)5.命名空间包 二、基础用法1. 项目结构示例2. 配置文件 setup.cfg3. setup.py 最小化示例&…

文章目录

  • 前言
  • 简介
  • 一、核心功能
    • 1.依赖管理
      • 自动安装依赖
      • 版本约束
      • 额外依赖组
      • 命令行工具
      • 插件系统
    • 2.开发模式安装
    • 3.资源文件管理
    • 4.Egg 分发(已逐渐被 Wheel 取代)
    • 5.命名空间包
  • 二、基础用法
    • 1. 项目结构示例
    • 2. 配置文件 setup.cfg
    • 3. setup.py 最小化示例(现代项目可省略)
    • 4. 常用命令
  • 三、进阶用法与最佳实践
    • 1. 动态版本号
    • 2. 包含数据文件
    • 3. Cython 扩展
    • 4. 兼容性标记
    • 5. 自定义构建命令
  • 四、常见问题解决
    • 1.找不到包?
    • 2.资源文件未包含?
    • 3.Entry Point 不生效?
  • 五、生态工具链整合
    • 1.构建
    • 2.上传
    • 3.虚拟环境
    • 4.测试
    • 5.文档
  • 总结


前言

本文仅仅简单介绍了Python中setuptools的模块的功能以及使用方法。


简介

setuptools 是 Python 生态中用于打包和分发项目的核心工具,它扩展了 Python 原生的 distutils 模块,提供了更强大的功能和更便捷的配置方式。以下从功能、用法和最佳实践三个维度进行详细说明:

一、核心功能

1.依赖管理

自动安装依赖

自动安装依赖:通过 install_requires 声明依赖,pip install 时会自动安装。

版本约束

版本约束:支持语义化版本(如 >=2.0,❤️.0)

额外依赖组

额外依赖组:通过 extras_require 定义可选依赖(如测试、文档依赖)。

命令行工具

命令行工具:将 Python 函数映射为命令行命令(如 pip 自身即通过 entry point 实现)。

插件系统

插件系统:其他程序可通过 entry points 动态发现并加载你的包(如 pytest 插件)。

2.开发模式安装

pip install -e .:将包以“可编辑模式”安装,代码修改无需重新安装,直接生效。

3.资源文件管理

自动包含 package_data 中声明的非代码文件(如配置文件、模板)。

4.Egg 分发(已逐渐被 Wheel 取代)

提供 .egg 格式分发,支持二进制依赖(现推荐使用 wheel 格式)。

5.命名空间包

支持在多个项目中共享同一个包命名空间(如 google.cloud.storage 和 google.cloud.bigquery)。

二、基础用法

1. 项目结构示例

my_project/
├── src/  # 推荐使用 src 目录隔离源码
│   └── my_pkg/
│       ├── __init__.py
│       └── module.py
├── tests/
├── pyproject.toml  # 构建系统声明
├── setup.cfg       # 推荐:静态配置
└── setup.py        # 动态配置(可选,逐渐被 setup.cfg 替代)

2. 配置文件 setup.cfg

[metadata]
name = my_pkg
version = 1.0.0
author = Your Name
description = A sample package[options]
package_dir = = src
packages = find:  # 自动查找包
install_requires =requests>=2.24.0numpy~=1.20.0[options.extras_require]
test =pytest>=6.0
dev = %(test)sflake8>=3.8[options.entry_points]
console_scripts =mycli = my_pkg.cli:main
pytest11 =myplugin = my_pkg.pytest_plugin

3. setup.py 最小化示例(现代项目可省略)

from setuptools import setupsetup()

4. 常用命令

#安装开发模式
pip install -e .#构建源码包和 Wheel
python -m build#上传到 PyPI
twine upload dist/*

三、进阶用法与最佳实践

1. 动态版本号

在 setup.cfg 中引用 __version__:#my_pkg/__init__.py
__version__ = "1.2.3"#setup.cfg
[metadata]
version = attr: my_pkg.__version__

2. 包含数据文件

[options]
include_package_data = True[options.package_data]
my_pkg =data/*.jsonconfigs/*.yml

3. Cython 扩展

from setuptools import setup, Extension
from Cython.Build import cythonizeextensions = [Extension("my_pkg.optimized", ["src/my_pkg/optimized.pyx"])
]setup(ext_modules=cythonize(extensions))

4. 兼容性标记

[metadata]
classifiers =Programming Language :: Python :: 3Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9

5. 自定义构建命令

继承 setuptools.Command 实现自定义命令:

from setuptools import setup, Commandclass CustomCommand(Command):def run(self):print("Running custom task...")setup(cmdclass={'custom': CustomCommand})

四、常见问题解决

1.找不到包?

使用 package_dir 和 packages=find: 自动检测。
确保 init.py 存在于每个包目录。

2.资源文件未包含?

检查 MANIFEST.in 或 include_package_data=True。

3.Entry Point 不生效?

确认函数签名正确(如 def main():)。
重新安装包(pip install -e .)。

五、生态工具链整合

1.构建

构建:使用 build 替代 python setup.py sdist bdist_wheel

2.上传

上传:使用 twine 替代 setup.py upload

3.虚拟环境

虚拟环境:结合 virtualenv/venv

4.测试

测试:通过 tox 实现多环境测试

5.文档

文档:与 Sphinx 集成生成文档

通过合理使用 setuptools,可以实现从代码管理到分发的全流程标准化,建议结合 pyproject.toml (PEP 621) 实现更现代的配置方式。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了Python中setuptools的模块的功能以及使用方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯学习大纲

(致酷德与热爱算法、编程的小伙伴们) 在查阅了相当多的资料后,发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以,干脆自己整理一篇,欢迎大家补充! 一、蓝桥必备高频考点 我们以此为重点学习…

Linux探秘坊-------4.进度条小程序

1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后&#xff0c;会 先停顿两秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;为什么会后打印呢&#xff1f; 因为&#xff…

基于Python的Diango旅游数据分析推荐系统设计与实现+毕业论文(15000字)

基于Python的Diango旅游数据分析推荐系系统设计与实现毕业论文指导搭建视频&#xff0c;带爬虫 配套论文1w5字 可定制到某个省份&#xff0c;加40 基于用户的协同过滤算法 有后台管理 2w多数据集 可配套指导搭建视频&#xff0c;加20 旅游数据分析推荐系统采用了Python语…

Scrapy:DownloaderAwarePriorityQueue队列设计详解

DownloaderAwarePriorityQueue 学习笔记 1. 简介 DownloaderAwarePriorityQueue 是 Scrapy 中一个高级的优先级队列实现&#xff0c;它不仅考虑请求的优先级&#xff0c;还会考虑下载器的负载情况。这个队列为每个域名&#xff08;slot&#xff09;维护独立的优先级队列&#…

dify-AI 私有部署可修改前端页面

dify文档 官方文档&#xff1a;欢迎使用 Dify | Dify 源码&#xff1a;https://github.com/langgenius/dify.git 安装docker 官网&#xff1a;https://www.docker.com/ 部署服务到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…

PHP基础部分

但凡是和输入、写入相关的一定要预防别人植入恶意代码! HTML部分 语句格式 <br> <hr> 分割符 <p>插入一行 按住shift 输入! 然后按回车可快速输入html代码(VsCode需要先安装live server插件) html:<h1>标题 数字越大越往后</h1> <p…

【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我们已经将进程通信部分讲完了&#xff0c;现在我们来讲一个进程部分也非常重要的知识点——信号&#xff0c;信号也是进程间通信的一…

[C++]多态详解

目录 一、多态的概念 二、静态的多态 三、动态的多态 3.1多态的定义 3.2虚函数 四、虚函数的重写&#xff08;覆盖&#xff09; 4.1虚函数 4.2三同 4.3两种特殊情况 &#xff08;1&#xff09;协变 &#xff08;2&#xff09;析构函数的重写 五、C11中的final和over…

50页精品PPT | 某大数据资产平台建设项目启动会材料

该PPT主要介绍了某集团大数据资产平台建设项目的启动会材料&#xff0c;围绕数据作为数字经济时代核心生产要素的背景&#xff0c;结合国家战略和集团数字化转型需求&#xff0c;分析了当前数据资源整合不足、孤岛现象严重、质量管控薄弱及共享机制不完善等问题&#xff0c;提出…

动静态链接与加载

目录 静态链接 ELF加载与进程地址空间&#xff08;静态链接&#xff09; 动态链接与动态库加载 GOT表 静态链接 对于多个.o文件在没有链接之前互相是不知到对方存在的&#xff0c;也就是说这个.o文件中调用函数的的跳转地址都会被设定为0&#xff08;当然这个函数是在其他.…

Web 后端 请求与响应

一 请求响应 1. 请求&#xff08;Request&#xff09; 客户端向服务器发送的HTTP请求&#xff0c;通常包含以下内容&#xff1a; 请求行&#xff1a;HTTP方法&#xff08;GET/POST等&#xff09;、请求的URL、协议版本。 请求头&#xff08;Headers&#xff09;&#xff1a;…

排序与算法:希尔排序

执行效果 希尔排序的执行效果是这样的&#xff1a; 呃……看不懂吗&#xff1f;没关系&#xff0c;接着往下看介绍 算法介绍 希尔排序算法&#xff08;Shell Sort&#xff09;是按其设计者希尔&#xff08;Donald Shell&#xff09;的名字命名&#xff0c;该算法由 1959 年公布…

亲测Windows部署Ollama+WebUI可视化

一. Ollama下载 登录Ollama官网(Ollama)点击Download进行下载 如果下载很慢可用以下地址下载&#xff1a; https://github.com/ollama/ollama/releases/download/v0.5.7/OllamaSetup.exe 在DeepSeek官网上&#xff0c;你可以直接点击【model】 到达这个界面之后&#xff0c;…

50页PDF|数字化转型成熟度模型与评估(附下载)

一、前言 这份报告依据GBT 43439-2023标准&#xff0c;详细介绍了数字化转型的成熟度模型和评估方法。报告将成熟度分为五个等级&#xff0c;从一级的基础转型意识&#xff0c;到五级的基于数据的生态价值构建与创新&#xff0c;涵盖了组织、技术、数据、资源、数字化运营等多…

golang panic信息捕获

背景 我们的日志接入阿里云sls平台&#xff0c;但是&#xff0c;日志是以json的格式存储在阿里云sls平台上&#xff0c;程序中产生的error,info等日志都可以实现以json的格式打印。但是&#xff0c;golang程序中产生的panic信息本身不是以json的格式输出&#xff0c;这就导致p…

拦截器VS过滤器:Spring Boot中请求处理的艺术!

目录 一、拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;&#xff1a;都是“守门员”&#xff01;二、如何实现拦截器和过滤器&#xff1f;三、拦截器和过滤器的区别四、执行顺序五、真实的应用场景六、总结 &#x1f31f;如果喜欢作者的讲…

FastGPT及大模型API(Docker)私有化部署指南

​​欢迎关注【AI技术开发者】 ​ 经过优化&#xff0c;在不影响FastGPT功能的情况下&#xff0c;大幅降低了部署的设备配置要求&#xff0c;仅需1c1h即可正常部署使用。 官方要求配置&#xff1a; ​ ​ 优化后的实际占用情况&#xff1a; 运行内存仅需370M&#xff08…

【第15章:量子深度学习与未来趋势—15.3 量子深度学习在图像处理、自然语言处理等领域的应用潜力分析】

一、开篇:为什么我们需要关注这场"量子+AI"的世纪联姻? 各位技术爱好者们,今天我们要聊的这个话题,可能是未来十年最值得押注的技术革命——量子深度学习。这不是简单的"1+1=2"的物理叠加,而是一场可能彻底改写AI发展轨迹的范式转移。 想象这样一个…

企业软件合规性管理:构建高效、安全的软件资产生态

引言 在数字化转型的浪潮下&#xff0c;企业的软件使用方式日益多元化&#xff0c;涉及云端、订阅制、永久授权及浮动许可等多种模式。然而&#xff0c;随着软件资产的增多&#xff0c;企业面临着合规性管理的严峻挑战&#xff1a;非法软件使用、许可证管理不当、软件资产闲置…

简单易懂,解析Go语言中的Channel管道

Channel 管道 1 初始化 可用var声明nil管道&#xff1b;用make初始化管道&#xff1b; len()&#xff1a; 缓冲区中元素个数&#xff0c; cap()&#xff1a; 缓冲区大小 //变量声明 var a chan int //使用make初始化 b : make(chan int) //不带缓冲区 c : make(chan stri…