杰瑞科技汇

Linux Python环境变量如何正确设置?

最核心的环境变量:PATH

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

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

问题场景

当你输入 pythonpip 命令时,系统提示 command not found,通常就是因为 PATH 变量没有包含 Python 的安装路径。

如何查看当前的 PATH

在终端中输入:

echo $PATH

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

如何设置 PATH

假设你的 Python 可执行文件安装在 /usr/local/python3.10/bin 目录下,你希望系统能直接找到它。

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

临时设置(仅对当前终端会话有效)

export PATH="/usr/local/python3.10/bin:$PATH"
  • export:将这个变量设置为“环境变量”,使其可以被当前会话启动的子程序(如脚本)继承。
  • "$PATH":将原有的 PATH 值追加到新路径的后面,这样可以保留系统原有的命令查找路径。
  • 验证:设置后,再次输入 echo $PATH,你会看到新路径已经被添加到列表的最前面,现在你可以直接输入 python3pip3 来运行它们。

永久设置(推荐)

临时设置在关闭终端后就会失效,要永久设置,你需要将 export 命令写入到系统的配置文件中。

针对当前用户(推荐,影响最小) 这是最常用的方法,只会影响你当前的用户,不会影响系统上的其他用户。

  1. 打开用户主目录下的 .bashrc 文件(如果你使用的是 Bash shell,这是最常见的情况)。

    nano ~/.bashrc

    (你也可以使用 vim, gedit 等其他编辑器)

    Linux Python环境变量如何正确设置?-图3
    (图片来源网络,侵删)
  2. 在文件末尾添加下面这行:

    export PATH="/usr/local/python3.10/bin:$PATH"
  3. 保存并关闭文件。

  4. 让配置生效:有三种方法:

    • 方法一(推荐):重新打开一个新的终端窗口。
    • 方法二:在当前终端执行 source 命令:
      source ~/.bashrc
    • 方法三:直接登录并重启你的 Shell:
      exec bash

针对所有用户(需要管理员权限) 如果你希望系统上的所有用户都能直接使用这个 Python 版本,可以修改 /etc/profile/etc/environment 文件。

  1. 使用 sudo 权限编辑 /etc/profile

    sudo nano /etc/profile
  2. 在文件末尾添加:

    export PATH="/usr/local/python3.10/bin:$PATH"
  3. 保存后,所有用户都需要重新登录才能使配置生效。


其他重要的 Python 相关环境变量

除了 PATH,还有一些变量会影响 Python 的行为。

PYTHONPATH

这个变量告诉 Python 解释器在哪里寻找模块(.py 文件)和包,它的作用类似于系统中的 PATH,但针对的是 Python 代码。

  • 用途:当你安装了一个不在标准库路径或 site-packages 目录下的第三方包,或者你自己的项目模块时,可以通过设置 PYTHONPATH 让 Python 能够导入它们。
  • 格式:一个由冒号 分隔的目录列表。

示例: 假设你的项目代码在 /home/myuser/projects/my_project 目录下。

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

在你的项目目录下的任何 Python 脚本中,都可以直接导入 my_project 包下的模块,而无需将其安装到 site-packages

PYTHONHOME

设置 Python 的“家”目录,它通常由 Python 安装程序设置,用于定位标准库模块。普通用户一般不需要手动修改这个变量

VIRTUAL_ENV

这个变量不是用来设置的,而是由虚拟环境工具(如 venv, virtualenv)在激活虚拟环境时自动设置的。

  • 作用:它指向当前激活的虚拟环境的根目录。
  • 用途:Python 及其包管理工具(pip)会通过这个变量来确保安装的包都落在虚拟环境的 site-packages 目录下,从而实现项目间的隔离,当你看到终端提示符前面有 (my-venv) 时,就说明 VIRTUAL_ENV 已经被设置了。

不同的 Shell 配置文件

你可能会在不同的地方看到环境变量的设置,了解它们的区别很重要。

文件名 作用范围 何时加载
/etc/profile 所有用户,所有交互式登录 Shell 用户登录时加载一次
~/.bash_profile 当前用户,交互式登录 Shell 用户登录时加载(如果存在)
~/.bashrc 当前用户,交互式非登录 Shell 每次打开新的终端窗口时都会加载
~/.profile 当前用户,兼容 Bourne Shell 登录时加载(~/.bash_profile 不存在)

简单总结:

  • 对于大多数日常使用,将环境变量设置在 ~/.bashrc 是最简单、最直接的方法。
  • 如果你想让设置在用户登录时就生效(用于启动图形界面会话前的脚本),可以设置在 ~/.profile~/.bash_profile
  • /etc/profile 用于系统级别的全局设置。

完整示例:为特定用户设置 Python 3.10

假设你已经从源码编译安装了 Python 3.10 到 /usr/local/python3.10,并希望它成为默认的 python3 命令。

  1. 确认 Python 安装路径

    /usr/local/python3.10/bin/python3.10 --version
    # 应该输出 Python 3.10.x
  2. 编辑用户配置文件

    nano ~/.bashrc
  3. 添加 PATHalias 在文件末尾添加以下内容:

    # 设置 Python 3.10 的路径到 PATH
    export PATH="/usr/local/python3.10/bin:$PATH"
    # (可选) 创建一个别名,让 'python' 命令指向 python3
    # 注意:这可能会覆盖系统默认的 python2 命令,请谨慎使用
    alias python='python3'
    alias pip='pip3'
  4. 保存并使配置生效

    source ~/.bashrc
  5. 验证 打开一个新的终端,输入以下命令进行验证:

    # 检查 PATH 是否更新
    echo $PATH | grep python3.10
    # 检查命令是否指向正确的位置
    which python3
    # 应该输出 /usr/local/python3.10/bin/python3
    which pip
    # 应该输出 /usr/local/python3.10/bin/pip
    python --version
    # 应该输出 Python 3.10.x

最佳实践

  1. 优先使用虚拟环境:为每个项目创建独立的虚拟环境(python -m venv my_project_env),并使用 source my_project_env/bin/activate 激活,这样可以完全避免全局环境变量污染问题。
  2. PATH 追加,不要覆盖:在设置 PATH 时,始终使用 export PATH="新路径:$PATH" 的格式,将新路径放在前面,同时保留原有的 $PATH
  3. 用户级优于系统级:除非必要,否则尽量在 ~/.bashrc 等用户级配置文件中修改,避免影响整个系统和其他用户。
  4. 谨慎使用 alias python=python3:这个别名很方便,但它会破坏那些期望使用 python 指向 Python 2 的旧脚本,在不确定的情况下,坚持使用 python3pip3 是更安全的选择。
分享:
扫描分享到社交APP
上一篇
下一篇