杰瑞科技汇

Centos如何正确配置Python环境变量?

我们将从最核心的 PATH 变量讲起,然后扩展到其他相关变量,并提供不同场景下的最佳实践。

Centos如何正确配置Python环境变量?-图1
(图片来源网络,侵删)

核心环境变量:PATH

PATH 是最重要的环境变量,它告诉操作系统去哪些目录中查找可执行的程序(python, pip, python3 等)。

1 查看 PATH 变量

在终端中输入以下命令:

echo $PATH

你会看到一个由冒号 分隔的目录列表, /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

2 PATH 变量与 Python 的关系

当你在终端输入 python 并回车时,系统会按 PATH 中列出的顺序,依次在每个目录里寻找名为 python 的文件,找到的第一个被执行。

Centos如何正确配置Python环境变量?-图2
(图片来源网络,侵删)

常见情况:

  • 系统自带的 Python 2: 在 CentOS 7 及更早版本中,/usr/bin/python 指向 Python 2。
  • 手动安装的 Python 3: 如果你通过 yumsource 编译安装了 Python 3,它的可执行文件(如 python3, pip3)很可能在 /usr/local/bin/ 目录下。

如果你的 PATH/usr/local/bin/usr/bin 之前,那么你输入 python3 时,系统会正确找到 Python 3,但如果 PATH 中没有 /usr/local/bin,或者顺序靠后,你可能会遇到 "command not found" 的错误。

3 如何修改 PATH 变量(临时和永久)

A. 临时修改(仅对当前终端会话有效)

使用 export 命令,修改只对当前打开的终端窗口有效,关闭窗口后失效。

Centos如何正确配置Python环境变量?-图3
(图片来源网络,侵删)
# 语法:export PATH=新路径:$PATH
# 将 /usr/local/bin 添加到 PATH 的最前面
export PATH=/usr/local/bin:$PATH
# 验证
echo $PATH
# 你会看到 /usr/local/bin 出现在最前面

B. 永久修改(对所有用户或单个用户有效)

这是更推荐的做法,特别是对于服务器环境。

  • 仅对当前用户生效(推荐)

    编辑用户主目录下的 .bashrc.bash_profile 文件,对于较新的系统,.bashrc 是更常见的选择。

    # 打开 .bashrc 文件
    vim ~/.bashrc

    在文件末尾添加以下内容:

    # 将 Python 3 的路径添加到 PATH 的最前面
    export PATH=/usr/local/bin:$PATH

    保存并退出(wq),然后让配置文件立即生效:

    # 重新加载 .bashrc 文件
    source ~/.bashrc
  • 对所有用户生效(需 root 权限)

    编辑 /etc/profile/etc/profile.d/ 下的一个文件(python.sh)。

    # 在 /etc/profile.d/ 创建一个新文件,这是更干净的做法
    sudo vim /etc/profile.d/python.sh

    在文件中添加:

    # 将 Python 3 的路径添加到 PATH 的最前面
    export PATH=/usr/local/bin:$PATH

    保存并退出,然后让配置对所有登录用户生效:

    # 重新加载 /etc/profile
    source /etc/profile
    # 或者,新登录的用户会自动加载

其他重要的 Python 环境变量

除了 PATH,还有几个变量对 Python 的行为有重要影响。

PYTHONPATH

PYTHONPATH 的作用类似于 PATH,但它是用来告诉 Python 解释器去哪些目录中查找模块(modules)和包(packages)的,当你 import 一个模块时,Python 会按以下顺序搜索:

  1. 内置模块
  2. PYTHONPATH 中列出的目录
  3. 标准库目录
  4. 第三方包安装目录(如 /usr/local/lib/python3.9/site-packages

如何设置:

假设你的项目代码在 /home/myuser/my_project,你想让 Python 能直接导入这个项目里的模块。

# 临时设置
export PYTHONPATH=/home/myuser/my_project:$PYTHONPATH
# 永久设置(添加到 ~/.bashrc)
echo 'export PYTHONPATH=/home/myuser/my_project:$PYTHONPATH' >> ~/.bashrc
source ~/.bashrc

PYTHONHOME

PYTHONHOME 设置了 Python 解释器的“根目录”,它通常指向 Python 的安装前缀,包含了 lib, include, bin 等子目录。在绝大多数情况下,你不需要手动设置这个变量,Python 启动时会自动根据可执行文件的位置推断出来,错误地设置它可能会导致 Python 无法启动。

VIRTUAL_ENV

这个变量极其重要,专门用于虚拟环境

当你激活一个虚拟环境(例如通过 source venv/bin/activate)后,VIRTUAL_ENV 变量会被设置为该虚拟环境的绝对路径,Python 及其工具(如 pip)会自动使用这个路径下的包,从而实现项目环境的隔离。

你可以通过检查这个变量来判断自己是否在虚拟环境中:

echo $VIRTUAL_ENV
# 如果在虚拟环境中,会输出类似 /home/myuser/project/venv 的路径
# 如果不在,则为空

CentOS 上的 Python 环境管理最佳实践

在 CentOS 上管理 Python 环境,强烈推荐使用以下方法,而不是直接修改系统级的 PATHPYTHONPATH

使用 venv (Python 内置,推荐)

venv 是 Python 3.3+ 内置的虚拟环境模块,是创建隔离环境的官方标准。

  1. 安装 Python 3 开发包 (确保 venv 模块可用)

    # CentOS 7
    sudo yum install python3-devel
    # CentOS 8 / CentOS Stream / RHEL 8+
    sudo dnf install python3-devel
  2. 创建项目目录和虚拟环境

    mkdir my_project
    cd my_project
    # python3 会调用系统默认的 Python 3
    python3 -m venv venv 

    这会在 my_project 目录下创建一个名为 venv 的文件夹,里面包含了一个独立的 Python 环境。

  3. 激活虚拟环境

    source venv/bin/activate

    激活后,你的终端提示符前会出现 (venv),表示你已进入虚拟环境。python 命令指向的是虚拟环境中的 Python,pip 也是虚拟环境中的。

  4. 在虚拟环境中工作

    # 安装项目依赖
    pip install requests numpy
    # 运行代码
    python my_app.py
  5. 退出虚拟环境

    deactivate

使用 pyenv (终极方案,管理多个 Python 版本)

如果你的项目需要不同版本的 Python(比如项目 A 需要 Python 3.8,项目 B 需要 Python 3.11),pyenv 是最佳选择,它可以让你在同一台机器上轻松安装和切换多个 Python 版本。

  1. 安装 pyenv 及其依赖

    # 安装必要的编译工具
    sudo yum install -y git gcc make patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel libffi-devel xz-devel
    # 安装 pyenv
    curl https://pyenv.run | bash
  2. 配置 pyenv pyenv 的安装脚本通常会提示你如何配置 shell,你需要将以下内容添加到你的 ~/.bashrc~/.bash_profile 文件中:

    # pyenv 设置
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"

    然后重新加载配置文件:

    source ~/.bashrc
  3. 安装 Python 版本

    # 查看可安装的版本
    pyenv install --list
    # 安装一个特定版本,3.9.18
    pyenv install 3.9.18
  4. 使用 Python 版本

    # 设置全局默认 Python 版本(会影响所有新 shell)
    pyenv global 3.9.18
    # 或者,为当前目录设置局部版本(推荐)
    pyenv local 3.9.18
    # 这会在当前目录创建一个 .python-version 文件
    # 验证当前使用的版本
    python --version
    # pip --version
  5. 结合 venv 使用pyenv 管理的 Python 环境中,再使用 venv 创建项目虚拟环境,是完美的组合:

    # pyenv local 3.9.18  # 确保在正确的 Python 版本目录下
    python -m venv my_project_venv
    source my_project_venv/bin/activate
    # ... 在这里安装依赖和开发

变量 作用 修改建议
PATH 查找可执行文件python, pip 不要手动修改!让 venvpyenv 来管理,如果必须改,请修改用户配置文件(如 ~/.bashrc)。
PYTHONPATH 查找模块和包 不要手动修改!使用虚拟环境(venv)来隔离项目依赖,这是最干净的方式。
VIRTUAL_ENV 标识虚拟环境 venv 自动设置,用于检查是否在虚拟环境中,无需手动修改。
最佳实践 隔离项目依赖 使用 venv 创建项目级别的虚拟环境,如果需要管理多个 Python 版本,使用 pyenv

遵循这些最佳实践,可以让你在 CentOS 上的 Python 开发环境变得清晰、可复现且易于管理。

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