游乐游手机版
首页/编程语言/文章详情

Ubuntu中Python包管理完整教程

时间:2026-06-17 06:36
在Ubuntu上管理Python包主要依靠apt、pip和虚拟环境。apt安装系统级预编译包;pip管理PyPI库;虚拟环境通过venv隔离项目依赖。使用requirements txt固化依赖清单,避免sudopip污染系统环境,必要时结合pyenv管理多版本。

在 Ubuntu 系统中管理 Python 包,主要依赖三大核心工具:系统包管理器 apt、官方推荐的 pip,以及虚拟环境。以下逐一详解每个环节的实际操作,内容均基于真实开发场景。

如何在Ubuntu上管理Python包

一、系统包管理器(apt):管理系统级 Python 包

apt 是 Ubuntu 系统自带的老牌包管理工具,安装的是经过发行版测试的预编译 Python 包。这类包通常与系统组件深度集成,例如需要调用系统库的 python3-dbus,使用 apt 安装最为稳妥。

  • 更新包列表:sudo apt update —— 此步骤不可跳过,否则可能获取到过时的包信息。
  • 安装 Python 包:命令格式为 sudo apt install python3-包名。例如安装 requests 库:sudo apt install python3-requests
  • 卸载 Python 包:sudo apt remove python3-包名,如 sudo apt remove python3-requests
  • 查看已安装包:dpkg -l | grep python3-,可过滤出所有以 python3- 开头的系统级包。

二、pip 工具:管理 Python 第三方包(推荐)

pip 是 Python 官方指定的包管理器,直接从 PyPI 仓库拉取最新版本。在项目开发中几乎完全依赖于它。

  • 安装/升级 pip:若未安装,可执行 sudo apt install python3-pip。随后将 pip 自身升级到最新版:pip3 install --upgrade pip
  • 安装 Python 包:pip3 install 包名,例如 pip3 install requests。若要锁定版本,可使用 ==,如 pip3 install requests==2.25.1
  • 卸载 Python 包:pip3 uninstall 包名,例如 pip3 uninstall requests
  • 查看已安装包:pip3 list 列出全部;pip3 show 包名 查看详细信息(版本、依赖关系等)。
  • 升级 Python 包:单个包升级用 pip3 install --upgrade 包名。要一键升级所有过时包,可运行:pip3 list --outdated --format=freeze | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip3 install -U。此命令会遍历所有过时包并逐一升级。

三、虚拟环境:隔离项目依赖(关键实践)

虚拟环境是 Python 开发中不可或缺的最佳实践——它让每个项目拥有独立的依赖空间,彻底避免 A 项目需要 requests 2.25、B 项目需要 requests 3.0 的冲突。Python 3 自带 venv 模块,无需额外安装。

  • 创建虚拟环境:python3 -m venv myenvmyenv 为环境目录名,可自定义。
  • 激活虚拟环境:source myenv/bin/activate。激活后终端提示符前会出现 (myenv),此时所有 pip 操作仅影响该环境。
  • 在虚拟环境中安装包:直接执行 pip install 包名,无需 sudo--user
  • 退出虚拟环境:运行 deactivate 即可。

四、requirements.txt:管理项目依赖

项目规模扩大或需要团队协作时,不能仅靠口头交代依赖包。requirements.txt 文件可将依赖清单固化,便于复用和分享。

  • 生成 requirements.txt:在项目的虚拟环境中执行 pip3 freeze > requirements.txt,所有包及其版本号将被写入该文件。
  • 从 requirements.txt 安装包:在新环境中运行 pip3 install -r requirements.txt,一键还原依赖。

五、其他工具(可选)

  • conda:若使用 Anaconda 或 Miniconda,conda 命令更为强大。它可管理 Python 版本本身,例如 conda create -n myenv python=3.8 直接创建指定 Python 版本的环境。但建议尽量避免 condapip 混用,以免引发兼容问题。
  • 源码编译:某些库在官方仓库中无预编译包,或需要特定旧版本时,可下载源码(.tar.gz),解压后运行 ./configure && make && sudo make install。前提是已安装编译工具 build-essential

注意事项

  • 权限问题:切勿直接使用 sudo pip。若确需在系统级安装包,应使用 --user 参数:pip3 install --user 包名。最佳实践始终是使用虚拟环境。
  • 系统依赖:卸载系统级 Python 包前,先确认是否有系统工具依赖它。可通过 apt rdepends python3-包名 查看反向依赖,避免破坏系统稳定性。
来源:https://www.yisu.com/ask/79365110.html
上一篇Ubuntu下Python依赖库的安装方法 下一篇Ubuntu系统下如何有效提升PHP运行速度的实用方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Java日期字符串格式化:指定样式转换教程
编程语言 · 2026-07-05

Java日期字符串格式化:指定样式转换教程

Java 日期字符串格式转换:从 "yyyy-MM-dd " 到 "dd-MM-yyyy " 并保留纳秒精度 日期格式转换是 Java 日常开发中非常常见的需求。然而,看似简单的操作一旦忽略了细节,就容易埋下隐患。本文主要介绍如何将类似 "2023-03-13 12:00:02 " 的字符串,转换为 "1

Java static方法优雅替换全局配置管理
编程语言 · 2026-07-05

Java static方法优雅替换全局配置管理

在Java项目中,“能否用static方法替代全局配置管理”几乎是每次技术讨论都会出现的话题。答案是:可以,但前提是掌握正确用法。static方法本身并非配置管理的替代品,它更像一个统一入口——将散布在各处的硬编码值集中管理,封装成一个受控、只读、可验证的配置访问点。 真正优雅的做法是:利用stat

Java抽象类约束子类行为实现标准规范
编程语言 · 2026-07-05

Java抽象类约束子类行为实现标准规范

在Java的世界里,抽象类(Abstract Class)是约束子类行为最经典的机制之一。它既不像接口那样仅做纯声明,也不像普通类那样提供完整实现——它处于两者之间,既是契约也是骨架。核心要点就是:在父类中使用abstract关键字声明抽象方法,编译器会自动检查,漏掉一个方法都无法通过编译。 抽象类

Java多线程环境下StringBuffer字符串拼接方法
编程语言 · 2026-07-05

Java多线程环境下StringBuffer字符串拼接方法

StringBuffer 的线程安全机制,实质上是在所有修改方法上添加了 synchronized 锁——例如 append、insert、delete 等操作,均受同一把 this 锁保护。同一时刻只允许一个线程对内部的 char[] 数组和 count 字段进行修改,从而保障数据一致性。但代价显

Java局部变量作用域冲突解决与实战指南
编程语言 · 2026-07-05

Java局部变量作用域冲突解决与实战指南

Ja va局部变量作用域冲突:本质是设计问题,靠工具不如靠思路 许多开发者遇到局部变量与成员变量同名时,第一反应可能是“编译器会自动处理吧?”——遗憾的是,Ja va编译器仅负责报告语法错误,并不会替你梳理业务逻辑。局部变量作用域冲突本质上属于逻辑边界设计问题,必须由开发者主动规划、显式隔离。核心方