尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Python:Pip包的安装与原理(Windows系统)
相关内容Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482pip是Python的包管理工具用于安装、升级和卸载Python包和依赖。它的全称是“Pip Installs Packages”是Python生态系统中的标准包管理器。pip从Python Package Index (PyPI)中下载和安装Python软件包使得开发者可以轻松地管理项目的依赖项。pip的安装1、自Python 3.4和Python 2.7.9开始Python的安装包中默认包含了pip如图1所示。因此从Python 3.4及更高版本pip会自动随Python安装除非在安装过程中选择不安装pip如图2所示。图1 默认安装pip图2 可选的不安装pip2、使用下面的命令获得安装脚本并用Python解释器执行但这要求Python解释器的版本最小为3.8需要连接互联网。curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py实际上get-pip.py中有一个用Base85编码嵌入的pip包执行该脚本会在系统中创建一个临时目录随后将Base85编码的pip包解码成一个zip文件并在其中解压接着临时目录被加入Python解释器的搜索路径sys.path后最后运行嵌入的pip来从互联网安装最新版本的pip。3、自Python 3.4和Python 2.7.9开始ensurepip模块加入了Python标准库执行下面的命令以安装pip这无需连接互联网因为pip包的.whl文件已被包含在库中。python -m ensurepip4、使用conda安装Python它会强制安装包括pip在内的一些包如图3所示。图3 conda会强制安装pip包在pip包安装完成后可以在Python的包文件夹中找到...\Lib\site-packages中如图4所示图4 pip已安装在pip安装后还会发现在Scripts文件夹下多出了pip.exe、pip3.exe之类的可执行文件如图5所示它们其实入口点(entry point)程序这将在之后说明。图5 pip的入口点程序pip的使用pip有两种使用方法一种是通过之前介绍的可执行文件pip.exe另一种是通过python -m命令。可执行文件pip.exe在Python环境中入口点程序是一种机制用于定义一个可以从命令行直接调用函数的方式。以下是关于入口点的详细解释1. 入口点的概念入口点是指应用程序、模块或脚本在运行时的起点也就是“入口”。在Python的上下文中入口点允许你以一种便捷的方式在命令行中调用Python脚本而不需要显式地使用Python解释器来执行。2. 入口点在Python中的应用在Python中入口点程序通常通过工具如setuptools来定义。其工作方式通常是为一个函数创建一个可以在命令行中执行的“快捷方式”。3. 如何查看入口点以pip.exe文件为例它实际上就是一个通过入口点生成的可执行文件。当运行pip.exe文件时它引导Python去找到pip包然后调用这个包的主函数可以通过图4中的pip-24.0.dist-info文件夹下的entry_points.txt查看入口点信息如下所示。# 文件entry_points.txt [console_scripts] pip pip._internal.cli.main:main pip3 pip._internal.cli.main:main目前的pip包使用配置文件pyproject.toml可在github中pip包的根目录找到其中与生成pip.exe有关的部分如下所示。# 文件pyproject.toml ***** [project.scripts] pip pip._internal.cli.main:main pip3 pip._internal.cli.main:main *****这意味着其实执行pip.exe就相当于执行了pip._internal.cli.main.py文件下的main函数。如果使用旧的配置文件setup.cfg应该如下所示。# 文件setup.cfg ***** [options.entry_points] console_scripts pip pip._internal.cli.main:main pip3 pip._internal.cli.main:main *****如果使用更早的配置文件setup.py应该如下所示。# 文件setup.py ***** entry_points{ console_scripts: [ pip pip._internal.cli.main:main, pip3 pip._internal.cli.main:main, ], } *****pip.exe会记录构建其的Python解释器的路径所以不能移动Python文件夹的位置pip.exe可以移动但不要这么做同时需要保证pip包在Python的搜索路径sys.path中这一般能保证因为其一般位于...\Lib\site-packages中。使用下面的命令可以查看pip.exe绑定到的Python解释器。pip --version pip 24.0 from C:\Users\12078\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip (python 3.11)下面用pip.exe安装了tqdm包可以发现它也在Scripts文件夹下创建了tqdm.exe文件如图6所示。pip install tqdm图6 tqdm的入口点程序python -m命令python -m用于将一个模块或包当作脚本运行顺带一提如果使用python -m命令则sys.path[0]就变成当前工作目录就像交互式Python中那样。如果用python -m去运行一个包则会运行其中的__main__.py文件pip包的__main__.py如下所示。# 文件__main__.py import os import sys # Remove and current working directory from the first entry # of sys.path, if present to avoid using current directory # in pip commands check, freeze, install, list and show, # when invoked as python -m pip command if sys.path[0] in (, os.getcwd()): sys.path.pop(0) # If we are running from a wheel, add the wheel to sys.path # This allows the usage python pip-*.whl/pip install pip-*.whl if __package__ : # __file__ is pip-*.whl/pip/__main__.py # first dirname call strips of /__main__.py, second strips off /pip # Resulting path is the name of the wheel itself # Add that to sys.path so we can import pip path os.path.dirname(os.path.dirname(__file__)) sys.path.insert(0, path) if __name__ __main__: from pip._internal.cli.main import main as _main sys.exit(_main())可以看出这其实还是相当于和可执行文件pip.exe一样执行了同一个main函数。但使用它的好处在于更加便捷。虚拟环境不论是通过可执行文件pip.exe还是通过python -m命令都需要确保绑定到目标Python的pip.exe或目标Python在PATH路径下。如果一个系统中存在多个版本的Python则无可避免地需要使用绝对/相对路径名。使用虚拟环境可以解决这个问题例如Anaconda它会自动调整环境变量。
RELATED

相关推荐

Verilog基础:时序调度中的竞争(四)(描述时序逻辑时使用非阻塞赋值)

Verilog基础:时序调度中的竞争(四)(描述时序逻辑时使用非阻塞赋值)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 作为一个硬件描述语言,Verilog HDL常常需要使用语句描述并行执行的电路,但其实在仿真器的底层,这些并行执行的语句是有先后顺序…

📅 2026/10/27 9:28:01
AMBA:APB的历史(从APB1到APB5)

AMBA:APB的历史(从APB1到APB5)

相关阅读 AMBAhttps://blog.csdn.net/weixin_45791458/category_12800219.html?spm1001.2014.3001.5482 APB 版本信息 AMBA 1 APB Specification 最初于1996年推出,最后在1998年更新(文档名为APB Specification Rev E),该版本的…

📅 2026/10/27 9:28:01
AMBA:AHB的历史(从AHB2到AHB5)

AMBA:AHB的历史(从AHB2到AHB5)

相关阅读 AMBAhttps://blog.csdn.net/weixin_45791458/category_12800219.html?spm1001.2014.3001.5482 AHB版本信息 AMBA 2 AHB Specification 于1999年推出(文档名为AMBA Specification Rev 2),该版本的AHB被认为是AHB2。 Multi-layer …

📅 2026/10/27 9:28:01
MORE NEWS

更多资讯

📰

Genkit skills本质解析:可编排的LLM能力契约单元

1. 这个“skills”到底指什么?别被热搜词带偏了方向 最近刷技术社区、开发者论坛,甚至朋友圈里都频繁跳出“skills”这个词——不是英文单词本意的“技能”,而是某种具体可安装、可调用、可配置的实体模块。它和 Gemini、GKE、Genkit、Googl…

📰

MonitorControl 快速上手:3 分钟找回外接显示器的亮度与音量快捷键

MonitorControl 快速上手:3 分钟找回外接显示器的亮度与音量快捷键 【免费下载链接】MonitorControl 🖥 Control your displays brightness & volume on your Mac as if it was a native Apple Display. Use Apple Keyboard keys or custom shortcut…

📰

【跑包网】wifi握手包跑包网站 cap在线分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

CNN为何在MNIST上远超全连接网络?局部感受野与权值共享的数学本质

简介:本资源是一份面向深度学习初学者与实践者的MNIST手写数字识别完整项目包,聚焦神经网络与卷积神经网络(CNN)在图像分类任务中的落地应用。项目基于TensorFlow框架,涵盖数据加载、CNN模型构建、训练调优、性能评估及…

📰

大模型应用开发入门:吴恩达课程提示工程、RAG与避坑指南

简介:面向希望快速上手大模型与人工智能应用开发的开发者,这是一份完整中文化吴恩达大模型系列课程并复现范例代码的入门教程,适合具备基础 Python 知识、希望系统学习 LLM 开发流程的技术人群。内容围绕提示工程、检索增强生成、函数调用等课…

📰

NVMe Write Zeroes及周边命令:语义、命令帧与实测坑

盘一台机器上的盘,最容易被忽略的往往不是读带宽、写带宽这些跑分指标,而是“这块区间我想让它变成干净的零”这类管理动作。几年前给一批测试机做批量镜像还原,脚本里老老实实地用dd往整盘灌/dev/zero,一块 1.6 TB 的企业级盘要跑…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬