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

问题场景
当你输入 python 或 pip 命令时,系统提示 command not found,通常就是因为 PATH 变量没有包含 Python 的安装路径。
如何查看当前的 PATH?
在终端中输入:
echo $PATH
你会看到一个由冒号 分隔的目录列表,
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
如何设置 PATH?
假设你的 Python 可执行文件安装在 /usr/local/python3.10/bin 目录下,你希望系统能直接找到它。

临时设置(仅对当前终端会话有效)
export PATH="/usr/local/python3.10/bin:$PATH"
export:将这个变量设置为“环境变量”,使其可以被当前会话启动的子程序(如脚本)继承。"$PATH":将原有的PATH值追加到新路径的后面,这样可以保留系统原有的命令查找路径。- 验证:设置后,再次输入
echo $PATH,你会看到新路径已经被添加到列表的最前面,现在你可以直接输入python3或pip3来运行它们。
永久设置(推荐)
临时设置在关闭终端后就会失效,要永久设置,你需要将 export 命令写入到系统的配置文件中。
针对当前用户(推荐,影响最小) 这是最常用的方法,只会影响你当前的用户,不会影响系统上的其他用户。
-
打开用户主目录下的
.bashrc文件(如果你使用的是 Bash shell,这是最常见的情况)。nano ~/.bashrc
(你也可以使用
vim,gedit等其他编辑器)
(图片来源网络,侵删) -
在文件末尾添加下面这行:
export PATH="/usr/local/python3.10/bin:$PATH"
-
保存并关闭文件。
-
让配置生效:有三种方法:
- 方法一(推荐):重新打开一个新的终端窗口。
- 方法二:在当前终端执行
source命令:source ~/.bashrc
- 方法三:直接登录并重启你的 Shell:
exec bash
针对所有用户(需要管理员权限)
如果你希望系统上的所有用户都能直接使用这个 Python 版本,可以修改 /etc/profile 或 /etc/environment 文件。
-
使用
sudo权限编辑/etc/profile:sudo nano /etc/profile
-
在文件末尾添加:
export PATH="/usr/local/python3.10/bin:$PATH"
-
保存后,所有用户都需要重新登录才能使配置生效。
其他重要的 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 命令。
-
确认 Python 安装路径
/usr/local/python3.10/bin/python3.10 --version # 应该输出 Python 3.10.x
-
编辑用户配置文件
nano ~/.bashrc
-
添加
PATH和alias在文件末尾添加以下内容:# 设置 Python 3.10 的路径到 PATH export PATH="/usr/local/python3.10/bin:$PATH" # (可选) 创建一个别名,让 'python' 命令指向 python3 # 注意:这可能会覆盖系统默认的 python2 命令,请谨慎使用 alias python='python3' alias pip='pip3'
-
保存并使配置生效
source ~/.bashrc
-
验证 打开一个新的终端,输入以下命令进行验证:
# 检查 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
最佳实践
- 优先使用虚拟环境:为每个项目创建独立的虚拟环境(
python -m venv my_project_env),并使用source my_project_env/bin/activate激活,这样可以完全避免全局环境变量污染问题。 PATH追加,不要覆盖:在设置PATH时,始终使用export PATH="新路径:$PATH"的格式,将新路径放在前面,同时保留原有的$PATH。- 用户级优于系统级:除非必要,否则尽量在
~/.bashrc等用户级配置文件中修改,避免影响整个系统和其他用户。 - 谨慎使用
alias python=python3:这个别名很方便,但它会破坏那些期望使用python指向 Python 2 的旧脚本,在不确定的情况下,坚持使用python3和pip3是更安全的选择。
