核心摘要:你应该用哪个方法?
| 场景 | 推荐方法 | 命令示例 |
|---|---|---|
| 新手入门、临时使用、测试 | python -m pip install |
python3 -m pip install requests |
| 项目开发( 强烈推荐) | venv + pip |
python3 -m venv my_project_env source my_project_env/bin/activate pip install requests |
| 系统级、全局安装(不推荐) | apt |
sudo apt update && sudo apt install python3-requests |
| 需要特定版本或开发模式 | pip + 或 -e |
pip install numpy==1.20.0 pip install -e . |
使用 pip (Python 包安装器)
pip 是 Python 官方推荐的包管理工具,绝大多数 Python 模块都通过它分发,这是最常用、最灵活的方法。

确保 pip 已安装
现代的 Python 3 版本通常已经自带 pip,你可以通过以下命令检查:
# 检查 pip 版本 pip3 --version
如果提示 command not found,你需要先安装它:
# 更新包列表 sudo apt update # 安装 pip sudo apt install python3-pip
基本安装命令
# 安装一个模块 pip3 install <模块名> # 示例:安装 requests 模块 pip3 install requests
常用 pip 选项
-
安装特定版本:
# 安装 2.25.1 版本的 requests pip3 install requests==2.25.1
-
升级模块:
(图片来源网络,侵删)pip3 install --upgrade <模块名> # 示例 pip3 install --upgrade requests
-
卸载模块:
pip3 uninstall <模块名> # 示例 pip3 uninstall requests
-
查看已安装的模块:
# 列出所有已安装的包及其版本 pip3 list # 显示某个包的详细信息 pip3 show <模块名> # 示例 pip3 show requests
使用 venv (虚拟环境) - 最佳实践
直接在系统 Python 环境中安装模块(全局安装)可能会导致版本冲突,一个项目需要 numpy==1.20,而另一个项目需要 numpy==1.25,虚拟环境可以为每个项目创建一个独立的、隔离的 Python 环境,完美解决这个问题。
创建虚拟环境
你需要 venv 模块,它通常在 Python 3 标准库中,如果没有,可以安装:

sudo apt install python3-venv
为你的项目创建一个虚拟环境(通常命名为 venv 或 .venv):
# 在你的项目文件夹下执行 python3 -m venv venv
这会创建一个名为 venv 的文件夹,里面包含了独立的 Python 解释器和 pip。
激活虚拟环境
激活后,你终端的命令行提示符前面会出现 (venv),表示你正在虚拟环境中工作。
source venv/bin/activate
在虚拟环境中工作
所有 pip 命令都只对这个虚拟环境生效,不会影响你的系统 Python。
# (venv) $ pip install numpy pandas # (venv) $ pip list # 你会看到 numpy 和 pandas 只列在这里
退出虚拟环境
当你完成工作后,只需输入:
deactivate
你的提示符会恢复原状。
使用 apt (Ubuntu 包管理器)
apt 是 Ubuntu 的系统级包管理器,它也可以安装一些 Python 模块,但这通常不是首选方法,原因如下:
- 版本过旧:
apt仓库中的 Python 模块版本通常非常陈旧,跟不上社区的开发速度。 - 灵活性差:很难安装特定版本,也无法轻松升级到最新版。
- 全局安装:同样会污染系统环境。
何时使用 apt?
- 当你需要安装一个与系统核心服务紧密相关的 Python 模块时(被某个 Ubuntu 系统工具依赖)。
- 当你无法通过
pip安装,并且你知道apt提供的版本足够满足你的需求时。
安装命令
# 更新软件包列表 sudo apt update # 安装 Python 3 的 requests 模块 sudo apt install python3-requests
你可以用 apt-cache show python3-<模块名> 来查看 apt 仓库中可用的版本。
常见问题与解决方案
权限错误:ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied
原因:你试图在系统 Python 环境中全局安装模块,但没有使用 sudo。
解决方案(推荐):
不要使用 sudo pip install! 这是不良实践,正确做法是使用 虚拟环境(方法二)。
临时解决方案(不推荐):
如果你确实需要全局安装,可以使用 --user 标志,将包安装到你的用户主目录下,避免污染系统:
pip3 install --user <模块名>
这会将包安装到 ~/.local/bin 等路径,你可能需要将这个路径添加到 PATH 环境变量中。
ModuleNotFoundError: No module named 'xxx'
原因:
- 你忘记安装这个模块了。
- 你在一个虚拟环境中安装了模块,但在另一个终端(未激活虚拟环境)中运行了脚本。
- 你用
pip安装了,但脚本中使用的是python命令,而你的系统python命令指向的是 Python 2。
解决方案:
- 安装模块:
pip3 install <模块名>。 - 激活正确的虚拟环境:确保在运行脚本前,终端提示符中有
(venv)。 - 明确使用
python3:始终使用python3和pip3命令来避免 Python 2 和 Python 3 的混淆。
版本冲突
原因:多个项目需要同一个模块的不同版本。
解决方案: 虚拟环境是解决此问题的终极方案,为每个项目创建一个独立的虚拟环境,每个环境安装其所需的模块版本,互不干扰。
总结与最佳实践
-
首选
pip和venv:对于 99% 的 Python 开发场景,都应遵循以下流程:- 创建项目文件夹。
python3 -m venv venv创建虚拟环境。source venv/bin/activate激活环境。pip install <模块名>安装所需依赖。- 在此环境中开发和运行你的代码。
-
明确版本:在项目中,使用
pip freeze > requirements.txt将所有依赖及其版本保存到一个文件中,这样,其他人(或未来的你)可以通过pip install -r requirements.txt一键重现完全相同的开发环境。 -
谨慎使用
sudo和apt:除非有特殊且明确的理由,否则避免使用sudo pip install和apt来安装 Python 库,将它们留给系统管理员和系统级工具。
遵循这些最佳实践,你的 Python 开发体验会更加顺畅、稳定和可维护。
