0

0

探索 Python 包的使用

WBOY

WBOY

发布时间:2023-09-02 12:25:07

|

1449人浏览过

|

来源于php中文网

原创

探索 python 包的使用

Python 包允许您分解大型系统并以一致的方式组织其模块,以便您和其他人可以有效地使用和重用。 Python 的座右铭“内置电池”意味着它在标准库中预装了许多有用的包。

但是您也可以利用许多令人惊叹的第三方软件包。在本教程中,您将学习所有您需要了解的包到底是什么、如何从包导入模块、探索 Python 标准库中的内置包以及安装第三方包。

什么是包?

在讨论包之前,我们先来讨论一下模块。模块是带有 *.py extension 的源文件,您(和其他人)在其中放置组成程序的函数和类。

Python 中的包只是一个包含多个 Python 文件的文件夹,并且应该有一个 __init__.py 文件。 __init__.py 文件表明该目录是一个包。 __init__.py 文件可以为空或包含一些可执行代码。

立即学习Python免费学习笔记(深入)”;

包是Python分层命名空间概念的体现。引用 Python 之禅:

“命名空间是一个非常棒的想法——让我们做更多这样的事情!”

要查看整个 Python Zen,请在 Python 交互式会话中输入 import this

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>> 
 

命名空间有助于组织代码并防止命名冲突。当多人一起工作或使用其他人开发的软件包时,这一点至关重要。

虽然包代表子包和模块的层次结构(它们是文件),但层次结构不必基于文件系统,其中包和子包是目录和子目录。它比这灵活得多。

创建 Python 包

让我们从一个简单的例子开始。下面我们有一个名为 simple_package 的包,其中包含两个 Python 模块。

simple_package
.
├── __init__.py
├── tasks.py
└── views.py

0 directories, 3 files
  • __init__.py :表示它是一个包
  • tasks.pyviews.py 是模块

第三方软件包

让我们看一下名为 ansible 的包。它不是标准库中的包。稍后您将看到如何查找和安装第三方软件包。现在,我们来看看目录文件结构。

这些包通常会安装到 Python 解释器的 site-packages 目录中,位于 lib 下的某个位置(取决于版本、操作系统和发行版)。

例如,在 Mac 上,Python 3.10 将位于 /lib/python3.10/site-packages 中。以下是ansible包的组织方式:

tree ansible -L 1
ansible
├── cli
├── collections
├── compat
├── config
├── constants.py
├── context.py
├── errors
├── executor
├── galaxy
├── __init__.py
├── inventory
├── keyword_desc.yml
├── __main__.py
├── modules
├── module_utils
├── parsing
├── playbook
├── plugins
├── __pycache__
├── release.py
├── template
├── utils
├── vars
└── _vendor

18 directories, 6 files
 

有6个模块和18个目录。每个目录都是主 ansible 包的子包。查看 ansible/utils 目录,我们可以看到它包含其他模块,甚至还有一个子包:

tree ansible/utils -L 1
ansible/utils
├── cmd_functions.py
├── collection_loader
├── color.py
├── context_objects.py
├── display.py
├── encrypt.py
├── fqcn.py
├── galaxy.py
├── hashing.py
├── helpers.py
├── __init__.py
├── jsonrpc.py
├── _junit_xml.py
├── listify.py
├── lock.py
├── multiprocessing.py
├── native_jinja.py
├── path.py
├── plugin_docs.py
├── py3compat.py
├── sentinel.py
├── shlex.py
├── singleton.py
├── ssh_functions.py
├── unicode.py
├── unsafe_proxy.py
├── vars.py
└── version.py

1 directory, 27 files

 

搜索路径

当你导入一个模块时,Python将根据搜索路径执行搜索算法,搜索路径是开始搜索的目录列表。搜索路径是通过 sys.path 可用的目录列表,您可以动态操作它(添加、删除或移动搜索路径中的项目)。 site-packages 目录始终存在。

要从 ansible/utils 导入 path.py 模块,您需要使用以下命令:

import ansible.utils.path

要导入 pathencrypt 模块,请使用以下命令:

import ansible.utils.path
import ansible.utils.encrypt

如果您还想使用标准 os.path 模块,您将使用以下命令:

百度MCP广场
百度MCP广场

探索海量可用的MCP Servers

下载
import os.path

现在您可以使用其中一个或两个路径模块,而不会因为它们所属的命名空间而发生冲突。

探索标准库

标准库有很多包。每当您需要完成一项任务但不确定如何完成时,就值得探索它。对于任何通用任务,如数学、shell 集成、操作系统集成、字符串操作、网络和常见文件格式,标准库中很可能有一个设计良好、性能良好且经过良好测试的包.

你真的可以信任标准库包,因为进入标准库是一件大事。该包要么是由 Python 核心开发人员设计的,要么是经过严格审查并在进入标准库之前经常作为第三方库在该领域大量使用的。

以下是标准库中按主题组织的所有包。

PyPI

标准库很棒,但通常会有一些您需要的特殊功能不是标准的。这并不意味着您必须从头开始编写。 Python 拥有一个充满活力且活跃的社区,开发并免费共享大量代码。输入 PyPI:Python 包索引。 PyPI 托管所有公开可用的软件包,并提供一站式商店供浏览它们。

浏览 PyPI

PyPI 将包组织在可浏览的索引中。您可以按主题、环境、框架、开发、状态、目标受众、许可证、自然语言、编程语言(是的,有支持多种编程语言的 Python 包)和操作系统来浏览和搜索。

截至 2021 年,PyPI 不再显示软件包的下载统计信息,因为维护统计信息所需的资源导致其效率低下。

安装软件包

有两种方法可以从 PyPI 安装软件包。您可以下载该软件包,然后运行 ​​python setup.py install。但现代的方法是使用 pip、setuptools 和wheel。

从 Python 3.4 和 Python 2.79 开始默认包含 Pip 和 setuptools,但您需要升级到最新版本:

  • Linux/macOS:pip install -U pip setuptools
  • Windows:python -m pip install -U pip setuptools
但是,不再支持 Python 2,因此您应该已经使用 Python 3.0 或更高版本来提高性能。

使用pip安装wheel:

pip install wheel.

要使用 pip 安装软件包,请发出此命令。

pip install <package_name>

其中 package_name 是包的名称。例如,要安装 Ansible,命令如下所示:

pip install ansible

如果需要特定版本,也可以指定如下:

pip install ansible==7.0

Python 包始终安装到环境中。我在这里不会介绍的一种常见做法是使用虚拟环境来管理具有不同解释器和/或不同安装包集的多个独立的 Python 安装。您可以在此处阅读有关虚拟环境的更多信息。

最佳实践

Python 打包权威提供了大量有关打包最佳实践的指导。这很重要,因为这是一个正在积极开发的领域,并且建议会快速发展。

此外,如果您想做一些特别的事情,例如从替代存储库而不是 PyPI 安装软件包或以更复杂的方式使用 pip,您会发现精彩的讨论和实用的建议。

结论

当您是 Python 初学者时,您会学习核心语言并享受使用它的乐趣。很快您就会发现标准库,并且随着您获得更多经验,您会从它的丰富性中受益越来越多。

作为 Pythonista,您发展的下一阶段是将 Python 社区在 PyPI 上带来的巨大优势融入到您的系统中。包作为可重用 Python 代码的部署单元使这个生态系统得以实现。

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

44

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

111

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

228

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

90

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

137

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

29

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

79

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

62

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

51

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号