跳至主要內容

PIP和虚拟环境

刘春龙原创...大约 11 分钟Python教程文档

PIP

Python 中库是借用其他编程语言的概念,没有特别具体的定义。

模块和包侧重于代码组织,有明确的定义。库强调的是功能性,而不是代码组织。

我们通常将某个功能的“模块的集合”,称为库。

标准库

Python 拥有一个强大的标准库。Python 语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由 Python 标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML 处理等额外的功能。

Python 标准库的主要功能有:

  • 文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode 支持,二进制数据处理等功能
  • 文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能
  • 操作系统功能,包含线程与进程支持、IO 复用、日期与时间处理、调用系统函数、日志(logging)等功能
  • 网络通信,包含网络套接字,SSL 加密通信、异步网络通信等功能
  • 网络协议,支持 HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC 等多种网络协议,并提供了编写网络服务器的框架
  • W3C 格式支持,包含 HTML,SGML,XML 的处理。
  • 其它功能,包括国际化支持、数学运算、HASH、Tkinter 等

目前学过的有:random、math、time、file、os、sys 等模块。

  • random 模块实现随机数处理
  • math 模块实现数学相关的运算
  • time 模块实现时间的处理
  • file 模块实现对文件的操作
  • OS 模块实现和操作系统的交互
  • sys 模块实现和解释器的交互

第三方扩展库

强大的标准库奠定了 python 发展的基石,丰富和不断扩展的第三方库是 python 壮大的保证。我们可以进入 PyPI 官网 https://pypi.orgopen in new window

可以看到发布的第三方库达到了十多万种,众多的开发者为 Python 贡献了自己的力量。

表 常用第三方库大汇总
分类库名称说明
环境管理P非常简单的交互式 python 版本管理工具
Pyenv简单的 Python 版本管理工具
Vex可以在虚拟环境中执行命令
Virtualenvvirtualenvwrapper创建独立 Python 环境的工具
包管理pipPython 包和依赖关系管理工具
pip-tools保证 Python 包依赖关系更新的一组工具
PipenvPython 官方推荐的新一代包管理工具
Poetry可完全取代 setup.pyopen in new window 的包管理工具
包仓库warehouseopen in new window下一代 PyPI
DevpiPyPI 服务和打包/测试/分发工具
分发(打包为可执行文件以便分发)PyInstaller将 Python 程序转成独立的执行文件(跨平台)
Nuitka将脚本、模块、包编译成可执行文件或扩展模块
py2app将 Python 脚本变为独立软件包(Mac OS X)
py2exe将 Python 脚本变为独立软件包(Windows)
pynsist一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python 本身
构建工具(将源码编译成软件)Buildout构建系统,从多个组件来创建,组装和部署应用
BitBake针对嵌入式 Linux 的类似 make 的构建工具
Fabricate对任何语言自动找到依赖关系的构建工具
交互式 Python 解析器IPython功能丰富的工具,非常有效的使用交互式 Python
bpythonopen in new window界面丰富的 Python 解析器
Ptpython高级交互式 Python 解析器,构建于 python-prompt-toolkitopen in new window 之上
文件管理Aiofiles基于 asyncio,提供文件异步操作
Imghdr(Python 标准库)检测图片类型
Mimetypes(Python 标准库)将文件名映射为 MIME 类型
path.pyopen in new window对 os.path 进行封装的模块
Pathlib(Python3.4+ 标准库)跨平台的、面向对象的路径操作库
Unipath用面向对象的方式操作文件和目录
Watchdog管理文件系统事件的 API 和 shell 工具
日期和时间Arrow更好的 Python 日期时间操作类库
Chronyk解析手写格式的时间和日期
DateutilPython datetime 模块的扩展
PyTime一个简单易用的 Python 模块,用于通过字符串来操作日期/时间
when.pyopen in new window提供用户友好的函数来帮助用户进行常用的日期和时间操作
文本处理chardetopen in new window字符编码检测器,兼容 Python2 和 Python3
Difflib(Python 标准库)帮助我们进行差异化比较
Fuzzywuzzy模糊字符串匹配
Levenshtein快速计算编辑距离以及字符串的相似度
Pypinyin汉字拼音转换工具 Python 版
Shortuuid一个生成器库,用以生成简洁的,明白的,URL 安全的 UUID
simplejsonopen in new windowPython 的 JSON 编码、解码器
UnidecodeUnicode 文本的 ASCII 转换形式
Xpinyin一个用于把汉字转换为拼音的库
Pygment通用语法高亮工具
Phonenumbers解析,格式化,储存,验证电话号码
Sqlparse一个无验证的 SQL 解析器
特殊文本格式处理Tablib一个用来处理中表格数据的模块
Pyexcel用来读写,操作 Excel 文件的库
python-docx读取,查询以及修改 word 文件
PDFMiner一个用于从 PDF 文档中抽取信息的工具
Python-Markdown2纯 Python 实现的 Markdown 解析器
Csvkit用于转换和操作 CSV 的工具
自然语言处理NLTKopen in new window一个先进的平台,用以构建处理人类语言数据的 Python 程序
Jieba中文分词工具
langid.pyopen in new window独立的语言识别系统
SnowNLP一个用来处理中文文本的库
Thulac清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包
下载器you-get一个 YouTube/Youku/Niconico 视频下载器
图像处理pillow最常用的图像处理库
imgSeek一个使用视觉相似性搜索一组图片集合的项目
face_recognition简单易用的 python 人脸识别
python-qrcode一个纯 Python 实现的二维码生成器
OCRPyocrTesseract 和 Cuneiform 的一个封装(wrapper)
pytesseractopen in new windowGoogle Tesseract OCRopen in new window 的另一个封装(wrapper)
音频处理AudiolazyPython 的数字信号处理包
Dejavu音频指纹提取和识别
id3reader一个用来读取 MP3 元数据的 Python 模块
TimeSide开源 web 音频处理框架
Tinytag一个用来读取 MP3, OGG, FLAC 以及 Wave 文件音乐元数据的库
Mingus一个高级音乐理论和曲谱包,支持 MIDI 文件和回放功能
视频和 GIF 处理Moviepy一个用来进行基于脚本的视频编辑模块,适用于多种格式,包括动图 GIFs
scikit-videoSciPy 视频处理常用程序
地理位置GeoDjango世界级地理图形 web 框架
GeoIPMaxMind GeoIP Legacy 数据库的 Python API
GeopyPython 地址编码工具箱
HTTPrequests人性化的 HTTP 请求库
httplib2全面的 HTTP 客户端库
urllib3一个具有线程安全连接池,支持文件 post,清晰友好的 HTTP 库
Python 实现的数据库pickleDB一个简单,轻量级键值储存数据库
PipelineDB流式 SQL 数据库
TinyDB一个微型的,面向文档型数据库
web 框架Djangoopen in new windowPython 界最流行的 web 框架
Flaskopen in new window一个 Python 微型框架
Tornadoopen in new window一个 web 框架和异步网络库
CMS 内容管理系统odoo-cms一个开源的,企业级 CMS,基于 odoo
djedi-cms一个轻量级但却非常强大的 Django CMS ,考虑到了插件,内联编辑以及性能
Opps一个为杂志,报纸网站以及大流量门户网站设计的 CMS 平台,基于 Django
电子商务和支付系统django-oscar一个用于 Django 的开源的电子商务框架
django-shop一个基于 Django 的店铺系统
Shoop一个基于 Django 的开源电子商务平台
AlipayPython 支付宝 API
Merchant一个可以接收来自多种支付平台支付的 Django 应用
游戏开发Cocos2d用来开发 2D 游戏
Panda3D由迪士尼开发的 3D 游戏引擎,并由卡内基梅陇娱乐技术中心负责维护。使用 C++ 编写, 针对 Python 进行了完全的封装
PygamePygame 是一组 Python 模块,用来编写游戏
RenPy一个视觉小说(visual novel)引擎
计算机视觉库OpenCV开源计算机视觉库
PyocrTesseract 和 Cuneiform 的包装库
SimpleCVopen in new window一个用来创建计算机视觉应用的开源框架
机器学习人工智能TensorFlowopen in new window谷歌开源的最受欢迎的深度学习框架
kerasopen in new window以 tensorflow/theano/CNTK 为后端的深度学习封装库,快速上手神经网络
HebelGPU 加速的深度学习库
Pytorchopen in new window一个具有张量和动态神经网络,并有强大 GPU 加速能力的深度学习框架
scikit-learn基于 SciPy 构建的机器学习 Python 模块
NuPIC智能计算 Numenta 平台
科学计算和数据分析NumPyopen in new window使用 Python 进行科学计算的基础包
Pandas提供高性能,易用的数据结构和数据分析工具
SciPyopen in new window用于数学,科学和工程的开源软件构成的生态系统
PyMCopen in new window马尔科夫链蒙特卡洛采样工具
代码分析和调试code2flow把你的 Python 和 JavaScript 代码转换为流程图
Pycallgraph这个库可以把你的 Python 应用的流程(调用图)进行可视化
Pylint一个完全可定制的源码分析器
autopep8自动格式化 Python 代码,以使其符合 PEP8 规范
Wdb一个奇异的 web 调试器,通过 WebSockets 工作
Lineprofiler逐行性能分析
Memory Profileropen in new window监控 Python 代码的内存使用
图形用户界面Pyglet一个 Python 的跨平台窗口及多媒体库
PyQt跨平台用户界面框架 Qtopen in new window 的 Python 绑定 ,支持 Qt v4 和 Qt v5
TkinterTkinter 是 Python GUI 的一个事实标准库
wxPythonwxPython 是 wxWidgets C++ 类库和 Python 语言混合的产物
网络爬虫和 HTML 分析Scrapy一个快速高级的屏幕爬取及网页采集框架
Cola一个分布式爬虫框架
Grab站点爬取框架
Pyspider一个强大的爬虫系统
html2text将 HTML 转换为 Markdown 格式文本
python-gooseopen in new windowHTML 内容/文章提取器
硬件编程Ino操作 Arduinoopen in new window 的命令行工具
PyroPython 机器人编程库
PyUserInput跨平台的,控制鼠标和键盘的模块
PingoPingo 为类似 Raspberry Pi,pcDuino, Intel Galileo 等设备提供统一的 API

PIP 模块管理工具

pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。

  • 查看版本
pip -v
  • 升级版本
python.exe -m pip install --upgrade pip
  • 安装第三方库 pymysql 库为例
pip install pymysql
  • 列出已安装的包:
pip list
  • 卸载包:
pip uninstall pymysql
  • 搜索包
pip search 包名
  • 升级包
pip install --upgrade 包名

虚拟环境使用

Python 虚拟环境是一种用于管理项目依赖关系的工具,它允许你在同一系统上的不同项目中创建独立的 Python 环境,以隔离它们的依赖关系。这可以确保项目之间不会相互干扰,因为它们使用不同的 Python 版本和库。

如果你使用的是 Python 3.3 或更高版本,venv 模块通常已经包含在 Python 中,无需额外安装。

  • 检查是否已安装 venv
python -m venv --help
  • 创建虚拟环境
python -m venv jiameienv
  • 激活虚拟环境
jiameienv\Scripts\activate # Windows:
# source jiameienv/bin/activate # macOS 和 Linux

一旦虚拟环境被激活,你将会注意到终端的命令提示符前面显示了虚拟环境的名称。

  • 导出依赖列表

你可以使用 pip freeze 命令来生成当前虚拟环境中安装的所有包的列表,并将其保存到一个文件中,以便与其他人共享或用于部署

pip freeze > requirements.txt
  • 安装依赖列表

如果你有一个 requirements.txt 文件,你可以使用以下命令来在虚拟环境中安装所有这些依赖项:

pip install -r requirements.txt
  • 退出虚拟环境
deactivate
  • 删除虚拟环境

删除一个虚拟环境,只需删除它的文件夹

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7