Python包管理入门

包管理器,是现代项目管理的重要组成部分,许多现代编程语言也会推出统一的包管理器以提升开发者体验,如rust 的cargo,nodejs 的npm,arkts 的ohpm等等。
Python 作为一门很“新”的语言,自然也提供包管理功能。

Python包管理的前世今生

如果要提到Python的包管理,那么必定绕不开PYPI(Python Package Index,中文:Python 包索引)。其由 Tarek Ziade 在2003年发起,起初只是一个简单的仓库用来存储和分发 Python 软件包,但随着时间推移,PYPI 逐步完善,成为我们现在所看见的 PYPI.org。
image
回归正题,Python 早期并没有包管理工具,开发者需要手动从PYPI上下载源代码,构建,最后放置到site-packages文件夹。这种情况持续到2004年,Jim Hugunin创建了easy_install工具,极大地改善了这个过程,当然其也有很多问题。


2008年,Jason R. Coombs发起pip项目,其相较easy_install,依赖管理更加优秀,并且引入了虚拟环境的概念,解决了全局包冲突的问题。2014年,Python Software Foundation宣布将pip作为官方推荐的包管理器,并将其集成到Python的标准库中。这意味着所有新版本的Python都将自带pip,使得安装和管理包变得更加方便。

安装PIP

pip现已集成至部分版本的 Python 安装包中,你可以通过如下命令检查当前是否已安装 Python:

python -m pip --version

如果该命令执行出错,那么你可能需要考虑自行安装 pip。


pip作为python的重要组件,其安装相对比较简单。您可以通过执行get-pip.py文件,在任意Python环境中安装pip。当然,你也可以使用以下针对各个操作系统(发行版)的特定安装方法:

ArchLinux(Pacman)

对于使用 Pacman 管理包的 Linux 发行版,你可以通过如下命令安装 pip:

sudo pacman -Syu python-pip

Debian(Apt)

Debian 与其衍生发行版提供了 Python2 与 Python3 两个版本的pip,你可以通过如下命令分别安装它们:

sudo apt-get install python-pip # python2
sudo apt-get install python3-pip # python3

使用PIP

pip的使用场景有很多,这里就一个使用场景进行简单的演示:

  • 管理项目依赖

管理项目依赖

从 默认的 PyPi 源安装

pip install <package-name>

例如,要安装一个名为 requests 的包,可以使用下面的命令:

pip install requests

默认安装最新版。要安装指定版本:

pip install requests==1.0.0

从指定地址(本地或Git仓库)安装

从本地安装

pip install /local/path/to/a/package

从 Git 仓库安装

pip install pip install git+https://github.com/user-name/repo-name.git

从依赖列表文件批量安装
假设文件名是 requirements.txt,

pip install -r requirements.txt

更多选项:

使用 -t 选项安装到指定路径
使用 -e 选项从随时更新变化的软件包源码安装(开发中的软件包)
安装依赖包的更多详情可参考官方文档,例如从本地索引源或其它镜像索引查找和安装包。

查看已安装的包信息

pip show <package-name>

例如,要查看 numpy 包的信息,可以使用下面的命令:

pip show numpy

这样,pip 就会显示 numpy 包的相关信息,例如包名、版本、依赖等。

升级依赖包

pip install --upgrade <package-name>

例如,要升级 numpy 包到最新版本,可以使用下面的命令:
pip install --upgrade numpy

删除依赖包

pip uninstall <package-name>

例如,要删除 numpy 包,可以使用下面的命令:

pip uninstall numpy

列出已安装的依赖包信息

pip list

可以使用一些参数来过滤包。例如,可以使用 -o--outdated 参数来列出所有已过期的包,使用 -u--uptodate 参数来列出所有已更新的包。

导出依赖包信息

pip freeze

输出到 requirements.txt 文件

pip freeze > requirements.txt

后记

关于pip的更多用法,你可以查阅pip的官方文档。

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

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

相关文章

[转载]SVN系列之—-SVN版本回滚的办法

推荐看原文:SVN系列之—-SVN版本回滚的办法-博客园 雨 燕 三、SVN版本回滚 背景:不想要某个版本改动比如25,将24版本导出后提交 1.【推荐】直接export 优点:不丢失新建的文件,同时获得最新的SVN版本控制。 操作步骤: TortoiseSVN→Show log→选中需要回滚的版本→右键→E…

Profibus协议转profinet协议网关模块连接电磁阀通讯案例

工业通讯中常见的协议有:Modbus协议,ModbusTCP协议,Profinet协议,Profibus协议,Profibus DP协议,EtherCAT协议,EtherNET协议等。然而,有许多现场需要将Profibus DP协议设备与Profinet协议设备连接并通讯。针对这一问题,很多企业选择使用Profibus协议转Profinet协议网关…

c语言代码代码风格配置

1、设置tabsize缩进为4修改点两个位置,然后搜索"detectindentation"将前面的勾选取消 二、配置c语言格式化代码 1、打开设置,选择用户配置,找到文本编辑器 "Default Formatter"(如果找不到可以直接在上方搜索) 安装了C/C++插件后可以选择:C/C++ms-vs…

代码随想录二刷复习(二分法)

二分法模板: 1:左闭右闭区间写法 第一种写法,我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right] (这个很重要非常重要)。 区间的定义这就决定了二分法的代码应该如何写,因为定义target在[left, right]区间,所以有如下两点: while (left <= right) 要…

36岁,大龄剩男,聊聊2024的上半年......

不知道我在等什么,也不知道这样等了多久,相信看到这句话的你,可能也是一头雾水吧! 还是以往的风格写到哪算哪,写东西真的是看感觉和心情都具备,写出来的东西才更有灵性,或者说更容易引起共鸣吧! 我在逃避? 可以这么说,但也不完全是,在一部分事情开始收尾的时候,情绪…

Modbus转Ethernet/IP网关模块与汇川PLC通讯案例

Modbus转Ethernet/IP网关模块(XD-MDEP100)是一种用于将Modbus协议转换为Ethernet/IP协议的设备。在汇川PLC通讯中,使用Modbus转Ethernet/IP网关模块可以方便地实现与其他设备的数据传输和通信。Modbus转Ethernet/IP网关模块(XD-MDEP100)是一种用于将Modbus协议转换为Ether…

test_web4

web4 题目分析 和上一题显示的页面一样,用同样的方法尝试注入:出现报错:看来这题相比上一题增加了过滤。使用 shell_exec 同理:换个思路,尝试使用一句话木马连接服务器后台。根据发回的响应包可以确定这题使用的是 nginx 服务器:看看访问日志先,?url=/var/log/nginx/ac…

test_web4_2

根据发回的响应包可以确定这题使用的是 nginx 服务器:看看访问日志先,?url=/var/log/nginx/access.log:尝试使用日志包含写入一句话木马,往 User-Agent 字段传入一句话木马 <?php @eval($_POST[web4]);?>传入后的日志增加一条记录:使用中国蚁剑连接日志文件,在 …

test_web4_1

web4 题目分析 和上一题显示的页面一样,用同样的方法尝试注入:出现报错:看来这题相比上一题增加了过滤。使用 shell_exec 同理:换个思路,尝试使用一句话木马连接服务器后台。

插片式远程 IO模块:Profinet总线耦合器博途配置

XD9000是Profinet总线耦合器,单个耦合器最多可扩展32个I/O模块!它们可以将输入/输出信号传送到远离控制中心的设备。Profinet总线耦合器是一种常用的设备,帮助连接IO模块和总线。XD9000是Profinet总线耦合器,单个耦合器最多可扩展32个I/O模块!它们可以将输入/输出信号传送…

frps内网穿透搭建http域名连接

起因是最近抽到了一台小鸡 1H512M2G,当然,安装完系统后就仅剩512M的存储空间了所以就打算搭建一个比较轻量的 我这里正好也没有公网ipv4,就搭建了frps(注意s -> server;c -> client下同) `frps配置 `frpc配置 serverAddr = "ip地址" serverPort = 10001 […

test1_1_1

web签到题 题目 web签到题分析 F12 打开 html 文件:将注释进行 Base64 解码得到 flag。 web2 题目 最简单的SQL注入分析 看着应该是 SQL 注入题。先尝试使用 admin 和 123456 登录,发现没有任何回显。看来报错被屏蔽了。显然 admin 栏如果注入成功则属于字符型注入。尝试使用…