说起在 Linux 系统里安个 Python 这事儿,哎呀,真是一言难尽。尤其是对刚从 Windows 过来,或者不怎么捣鼓系统的朋友,可能觉得挺玄乎的。系统里不是自带了一个吗?为啥还要自己装?这大概是第一个会冒出来的疑问吧。很简单,系统自带的那个啊,十有八九是老掉牙的版本,就跟老物件儿似的,虽然还能用,但很多新东西跑不了,甚至会跟系统里的一些核心组件绑定得死死的,你动它一下,嘿,说不定哪个依赖就断了,然后系统就出幺蛾子。咱要玩点新的库、新的框架,比如最新的 Django 啊、FastAPI 啊,或者就想尝尝新版 Python 的语法糖,那必须得自己请个新版回家。

linux怎么安装python 呢?其实路子挺多,但我跟你说,不是每条路都适合你,也不是每条路都那么顺畅。咱得根据自己的实际情况,选一条相对靠谱的。我这些年跟 Linux 打交道,装 Python 少说也折腾过好几回,从最早的 Ubuntu 到 CentOS 再到现在的 Arch(别学我,Arch 水深),各种坑基本都踩遍了。今天就掰开了揉碎了跟你聊聊这几条道儿,以及我个人觉得哪个更适合普通用户。

方法一:最省心——用系统自带的包管理器

这是最常见、最无脑(褒义词!)的方法了,也是我个人最推荐新手尝试的。大部分 Linux 发行版都有自己的“应用商店”,只不过是命令行版的,比如 Ubuntu/Debian 系的 apt,CentOS/RHEL 系的 yum 或者新的 dnf。用这玩意儿装东西,系统会自动帮你处理依赖关系,省去你一堆麻烦。

想用 aptPython 3?打开终端,敲这行:

bash
sudo apt update
sudo apt install python3

update 一下是好习惯,刷新仓库信息,确保你拿到的安装包是最新的。然后 sudo apt install python3 就完事儿。sudo 是用来获取管理员权限的,因为安装软件这事儿得系统说了算。它会问你密码,输入就行,屏幕上可能不会显示你输入的字符,正常。

如果是用 yumdnf 的系统(比如 CentOS 7 用 yum,CentOS 8/Fedora 用 dnf),命令差不多:

bash
sudo yum update # 或者 dnf update
sudo yum install python3 # 或者 dnf install python3

看到没?就这么简单几行命令,回车,等它跑完,一个新的 Python 3 版本就装好了。通常会装在 /usr/bin/python3 或者 /usr/local/bin/python3 这种地方。

但是,这种方法有个局限性:你能装的版本取决于你系统仓库里有什么。可能不是最新的 Python 版本。比如你想装 Python 3.10,但你的系统仓库里只有 3.8,那就没办法了。而且,这种方式安装的 Python 也是系统级别的,虽然比动系统自带的那个安全点,但如果你有很多项目依赖不同版本的 Python 或者不同的库版本,还是有点不灵活。这就像住大宿舍,挺方便,但没啥个人空间。

方法二:有点折腾但版本自由——源码编译安装

这条路就稍微有点硬核了,但换来的是自由度。你想装哪个版本的 Python?Python 官网上下个源码包,自己编译安装!这就像自己盖房子,想啥样儿就啥样儿,就是过程复杂点,灰尘多点。

为啥要自己编译?通常是为了装某个特定的新版本,或者你想在 Python 里启用一些默认不开启的特性。

步骤大概是这样:

  1. 下载源码: 去 Python 官网 (python.org) 找到你想要的版本,比如 Python 3.9.10 的源码包 (.tgz 文件),然后用 wget 命令在 Linux 里下载下来。
    bash
    wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz
  2. 解压: 下载回来的是个压缩包,得解开。
    bash
    tar -xf Python-3.9.10.tgz

    这会得到一个叫 Python-3.9.10 的目录。
  3. 进入目录:
    bash
    cd Python-3.9.10
  4. 配置: 这一步是检查你的系统环境,看看编译 Python 需要的各种库、工具链齐不齐。你可以指定安装目录(很重要,别装到 /usr/bin/usr/local/bin 这种系统目录里去,容易覆盖系统文件,建议装到 /opt 或者你自己的家目录下的一个特定位置,比如 /home/youruser/.local/python3.9)。常用的配置命令是:
    bash
    ./configure --enable-optimizations --prefix=/opt/python-3.9.10

    --enable-optimizations 会让编译出来的 Python 跑得更快,但编译时间会长一些。--prefix=/opt/python-3.9.10 就是指定安装位置了。这个 /opt/python-3.9.10 只是个例子,你可以换成别的。
    踩坑点: 这一步最容易出问题!可能提示你缺这少那的库,比如 zlib-devel, bzip2-devel, openssl-devel, sqlite-devel, readline-devel, libffi-devel 等等。别慌,根据错误信息用包管理器(aptyum/dnf)把这些依赖装上就行了。比如在 Ubuntu 上:
    bash
    sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

    装完再回来重新执行 ./configure。这个过程可能要反复几次,直到 ./configure 顺利跑完,不报致命错误。

  5. 编译: 这是个体力活,你的电脑得吭哧吭哧干一阵子。
    bash
    make -j$(nproc)

    make -j$(nproc) 这个命令会利用你 CPU 的所有核心来并行编译,能快不少。盯着屏幕看编译信息刷屏,有点像看黑客电影,哈哈。如果中间报错停了,得仔细看错误信息,一般还是缺库或者配置不对。

  6. 安装: 编译好了,最后一步就是装到你指定的位置去。
    bash
    sudo make altinstall

    注意,这里我用了 make altinstall 而不是 make install敲黑板,划重点! make install 会在系统路径里创建 pythonpip 的软链接,可能会覆盖掉系统自带的或者之前用包管理器装的 Python 版本,导致系统混乱。而 altinstall 就乖巧多了,它只会创建带版本号的命令,比如 python3.9pip3.9,不会影响系统默认的 /usr/bin/python/usr/bin/python3。所以,强烈推荐使用 make altinstallsudo 当然还是需要的,因为你是往 /opt 这种需要管理员权限的地方安装。

  7. 验证: 装好了,试试看!
    bash
    /opt/python-3.9.10/bin/python3.9 --version

    如果能正确输出 Python 3.9.10,恭喜你,成功了!

编译安装虽然麻烦,需要处理依赖,但它给了你最新、最纯净的 Python 环境,而且装在你指定的地方,不污染系统。这就像自己在家搭了个工作室,工具啥的都按自己习惯放。

方法三:管理多个 Python 版本的利器——使用 pyenv/conda 等工具

如果你是个重度 Python 用户,经常需要在不同项目间切换,有的要 Python 3.7,有的要 3.9,有的要 3.10,那上面两种方法都太笨重了。包管理器只能装系统仓库里那几个版本,编译安装每次一个版本,装多了管理起来头大。这时候,你就需要一个专业的 Python 版本管理器了,比如 pyenv 或者 conda

我个人更喜欢 pyenv,它轻量,专注于 Python 版本管理。conda 更重量级,除了 Python 还能管理其他语言和包,更适合搞数据科学的朋友。咱们以 pyenv 为例简单说说。

pyenv 本身也挺简单,可以用它的安装脚本:

bash
curl https://pyenv.run | bash

这脚本会自动帮你下载 pyenv 并放到合适的位置。装完后,按照脚本的提示,你需要修改一下你的 shell 配置文件(比如 ~/.bashrc~/.zshrc),把 pyenv 初始化和添加到环境变量的命令加进去。然后 source ~/.bashrc (或者你的文件) 让配置生效。

配置好 pyenv 后,安装 Python 就变得优雅多了:

  1. 查看可安装版本:
    bash
    pyenv install --list

    哇塞,能看到一大串可用的 Python 版本,从古老的 2.x 到最新的 3.x,甚至还有各种发行版(比如 Anaconda, Miniconda, PyPy 等等)。

  2. 安装指定版本: 比如你想装 Python 3.10.0。
    bash
    pyenv install 3.10.0

    pyenv 会自动去下载源码,并在你的用户目录下编译安装(通常在 ~/.pyenv/versions/ 里),整个过程跟手动编译差不多,但它帮你处理好了下载、解压、配置、编译、安装这些步骤,还解决了 altinstall 的问题。编译过程可能还是需要一些系统级别的编译工具和库,如果 pyenv install 报错说缺什么,你还是得用包管理器去装那些依赖,跟方法二里遇到的类似。

  3. 切换版本: 这是 pyenv 的核心功能。

    • 全局切换(谨慎使用):pyenv global 3.10.0 – 这样你当前登录的用户在任何地方默认用的都是 3.10.0。
    • 局部切换(项目推荐):进入你的项目目录,然后 pyenv local 3.9.7 – 这样只有在这个目录和它的子目录里,默认的 Python 版本才是 3.9.7。这是最常用的方式,不同项目用不同版本,互不干扰。
    • 当前会话切换:pyenv shell 3.8.12 – 只影响当前终端窗口。

pyenv 管理 Python 版本,就像给每个项目发了一把钥匙,想用哪个版本的 Python 就开哪个门。这对于经常写代码、维护多个项目的人来说,简直是救命稻草。

再强调一下:虚拟环境(Virtual Environment)!

无论你用哪种方式安装了 Python,强烈建议你为每个项目都创建一个独立的虚拟环境。这跟上面说的 Python 版本管理不是一回事。版本管理(比如 pyenv)是解决你有多个 Python 解释器版本(比如 Python 3.8 和 3.10)的问题;而虚拟环境是在某个特定的 Python 版本下,为你的项目创建一个隔离的库安装空间。

你想啊,你第一个项目可能需要 requests 库的 2.25 版本,第二个项目需要 2.28 版本。如果所有库都装到同一个地方(系统级的 site-packages),那就会冲突。虚拟环境就是解决这个问题的。

Python 3.3+ 自带 venv 模块,用起来很方便:

  1. 进入你的项目目录。
  2. 创建虚拟环境:
    bash
    python3 -m venv .venv
    # 或者如果你用 pyenv 切换到了特定版本,直接用那个版本的命令
    # python -m venv .venv

    这会在当前目录下创建一个叫 .venv 的文件夹(名字随意,.venv 是约定俗成的)。
  3. 激活虚拟环境:
    bash
    source .venv/bin/activate

    看到终端前出现了 (.venv) 字样了吗?说明你已经进入这个虚拟环境了。
  4. 安装项目依赖:
    bash
    pip install -r requirements.txt
    # 或者 pip install requests django flask 等等

    这时候用 pip 安装的库,只会装到这个 .venv 目录里,不会影响系统或其他虚拟环境。

  5. 退出虚拟环境:
    bash
    deactivate

用好虚拟环境,你的 Python 开发环境会变得超级干净、整洁、可控。这就像你在每个项目的工作台上只放这个项目需要的工具,而不是把所有项目的工具混在一起。

总结一下我个人的碎碎念:

对于刚接触 Linux,或者只是想跑跑一些简单的 Python 脚本的朋友,用系统包管理器安装是最省事的,试试 sudo apt install python3 或者 sudo yum install python3 吧,通常够用了。

如果你需要最新的 Python 版本,或者想深入了解编译过程,不怕麻烦,那源码编译是个不错的选择,但切记 make altinstall 和指定安装目录,别把系统搞崩了。

如果你是个资深开发者,同时维护好几个项目,每个项目依赖的版本不一样,那花点时间学习和使用 pyenvconda 来管理你的 Python 版本,再结合虚拟环境,绝对是事半功倍,一劳永逸。

最后再多一句嘴,不管你用哪种方式,永远不要轻易去替换或修改系统自带的那个 Python 版本!那个版本可能是系统内部脚本依赖的,你动了它,系统环境可能就坏了。咱们新安装的 Python,最好是作为额外的一个版本来使用,通过软链接、环境变量或者 pyenv 这种工具来切换和管理。

好了,关于 linux怎么安装python 这事儿,我的经验和心得大概就这些了。希望对你有点帮助,少走点弯路。在 Linux 的世界里折腾,就是这样,有点挑战,有点麻烦,但搞定了,成就感满满的。祝你顺利把 Python 请到你的 Linux 系统里,玩得开心!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。