杰瑞科技汇

Ubuntu下Python模块安装失败怎么办?

核心摘要:你应该用哪个方法?

场景 推荐方法 命令示例
新手入门、临时使用、测试 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 模块都通过它分发,这是最常用、最灵活的方法。

Ubuntu下Python模块安装失败怎么办?-图1
(图片来源网络,侵删)

确保 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
  • 升级模块

    Ubuntu下Python模块安装失败怎么办?-图2
    (图片来源网络,侵删)
    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 标准库中,如果没有,可以安装:

Ubuntu下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'

原因

  1. 你忘记安装这个模块了。
  2. 你在一个虚拟环境中安装了模块,但在另一个终端(未激活虚拟环境)中运行了脚本。
  3. 你用 pip 安装了,但脚本中使用的是 python 命令,而你的系统 python 命令指向的是 Python 2。

解决方案

  1. 安装模块pip3 install <模块名>
  2. 激活正确的虚拟环境:确保在运行脚本前,终端提示符中有 (venv)
  3. 明确使用 python3:始终使用 python3pip3 命令来避免 Python 2 和 Python 3 的混淆。

版本冲突

原因:多个项目需要同一个模块的不同版本。

解决方案虚拟环境是解决此问题的终极方案,为每个项目创建一个独立的虚拟环境,每个环境安装其所需的模块版本,互不干扰。


总结与最佳实践

  1. 首选 pipvenv:对于 99% 的 Python 开发场景,都应遵循以下流程:

    • 创建项目文件夹。
    • python3 -m venv venv 创建虚拟环境。
    • source venv/bin/activate 激活环境。
    • pip install <模块名> 安装所需依赖。
    • 在此环境中开发和运行你的代码。
  2. 明确版本:在项目中,使用 pip freeze > requirements.txt 将所有依赖及其版本保存到一个文件中,这样,其他人(或未来的你)可以通过 pip install -r requirements.txt 一键重现完全相同的开发环境。

  3. 谨慎使用 sudoapt:除非有特殊且明确的理由,否则避免使用 sudo pip installapt 来安装 Python 库,将它们留给系统管理员和系统级工具。

遵循这些最佳实践,你的 Python 开发体验会更加顺畅、稳定和可维护。

分享:
扫描分享到社交APP
上一篇
下一篇