核心概念:环境变量类型
在 Linux 中,环境变量的配置主要分为两种,它们的生效范围和优先级都不同:

-
用户级环境变量
- 生效范围:仅对当前用户有效。
- 配置文件:通常位于用户主目录下的
.bashrc,.zshrc,.profile等文件中。 - 优先级:每次用户登录或打开新的终端时,系统会加载这些配置文件,如果你修改了它们,需要重新加载或打开一个新的终端才能生效。
- 适用场景:个人开发环境配置,推荐使用这种方式。
-
系统级环境变量
- 生效范围:对系统中的所有用户有效。
- 配置文件:通常位于
/etc/environment或/etc/profile及其子目录(如/etc/profile.d/)中。 - 优先级:在用户级变量之前加载,修改后需要重启系统或重新登录才能生效。
- 适用场景:系统管理员统一配置,确保所有用户都能访问某个工具。
最常见的场景:配置 Python 和 Pip 的命令别名
很多人会遇到 python 命令找不到,或者 python3 命令存在但 pip 命令不存在的问题,这是因为系统默认的 Python 版本可能不是你安装的版本,或者 pip 没有被正确添加到环境变量中。
步骤 1:确认 Python 和 Pip 的安装路径
找到你的 Python 和可执行文件(pip, pip3)的实际位置。

# 查找 python3 的路径 which python3 # 输出示例: /usr/bin/python3 # 查找 pip3 的路径 which pip3 # 输出示例: /usr/bin/pip3 # 更通用的方法是使用 whereis whereis python3 whereis pip3
步骤 2:将路径添加到用户级环境变量
我们使用最常用的 .bashrc 文件为例,如果你的终端是 Zsh,则编辑 .zshrc。
-
打开配置文件
nano ~/.bashrc
你也可以使用
vim或gedit等编辑器。 -
在文件末尾添加路径 在文件的最末尾,添加以下内容,请将
/usr/bin替换为你上一步查找到的实际路径。
(图片来源网络,侵删)# 将 Python 和 Pip 的路径添加到 PATH 环境变量中 # 注意:不要直接覆盖整个 PATH,而是在原有值后面添加 export PATH="$PATH:/usr/bin"
重要提示:
PATH是一个列表,用冒号 分隔。$PATH必须放在最前面,这样系统会优先查找你之前已经配置好的路径,然后再查找你新添加的路径,这可以避免覆盖系统原有的重要命令。- 如果你安装了多个 Python 版本(比如通过
pyenv),你可能需要把新版本 Python 的路径(如~/.pyenv/shims)添加到PATH的最前面,以实现版本切换。
-
保存并退出
- 在
nano中,按Ctrl + X,然后按Y,最后按Enter。
- 在
-
重新加载配置文件 让当前终端会话立即生效,无需重启。
source ~/.bashrc
或者,直接关闭当前终端,再打开一个新的终端。
-
验证配置
# 检查 PATH 变量是否更新 echo $PATH # 你应该能在输出的末尾看到你添加的路径 # 检查命令是否可用 python3 --version pip3 --version
其他常见环境变量配置
除了 PATH,还有其他一些重要的环境变量。
PYTHONPATH:Python 的模块搜索路径
当你在 Python 中 import 一个模块时,Python 会在以下路径中寻找:
- 当前目录
PYTHONPATH中列出的所有目录- Python 安装时默认的库路径(如
/usr/lib/python3.8/site-packages)
场景:如果你自己开发了一些 Python 包,不想把它们安装到系统库中,但又想在任何项目中直接 import,就可以使用 PYTHONPATH。
配置方法(同样在 ~/.bashrc 中):
# 假设你的项目代码在 ~/my_python_libs 目录下 export PYTHONPATH="$PYTHONPATH:~/my_python_libs" # 如果有多个路径,用冒号分隔 # export PYTHONPATH="$PYTHONPATH:~/path/to/project1:~/path/to/project2"
验证:
source ~/.bashrc
python3 -c "import sys; print('\n'.join(sys.path))"
# 你应该能在输出中看到 ~/my_python_libs 这个路径
VIRTUAL_ENV:虚拟环境的标识
当你激活一个 Python 虚拟环境时,该环境会自动设置 VIRTUAL_ENV 变量,其值为虚拟环境的根目录路径,这个变量主要被 pip 等工具用来确保包被安装到当前激活的虚拟环境中,而不是全局。
通常你不需要手动设置它,当你使用 source venv/bin/activate 激活虚拟环境时,它会自动设置。
系统级环境变量配置(谨慎使用)
如果你是系统管理员,需要为所有用户配置环境变量,可以修改系统级文件。
修改 /etc/environment(适用于简单变量)
这个文件格式比较特殊,不需要 export,每行一个 KEY="VALUE"。
# 使用 sudo 编辑 sudo nano /etc/environment # 添加如下内容(示例) PATH="/usr/local/bin:/usr/bin:/bin" PYTHONPATH="/usr/local/lib/python3.8/site-packages"
修改后需要重启系统或重新登录才能生效。
修改 /etc/profile.d/(推荐)
这是更灵活、更推荐的方法,你可以在该目录下创建一个以 .sh 结尾的脚本,系统会在用户登录时自动执行它。
# 创建一个新的配置脚本 sudo nano /etc/profile.d/python_env.sh 示例) #!/bin/sh export PATH="$PATH:/opt/python/bin" export PYTHONPATH="/opt/custom_libs:$PYTHONPATH" # 保存后,赋予执行权限 sudo chmod +x /etc/profile.d/python_env.sh
这种方式同样需要重启或重新登录才能生效。
常见问题排查
-
问题:我改了
.bashrc,但source后还是不生效。 原因:你可能不是在.bashrc中修改的,而是在.profile或.zshrc中,或者你的终端是sh而不是bash。 解决:检查你使用的 Shell 类型:echo $SHELL,根据 Shell 类型,编辑对应的配置文件(.bashrc,.zshrc,.profile)。 -
问题:
pip命令找不到,但pip3可以。 原因:这是最常见的问题,很多系统为了区分 Python 2 和 Python 3,只安装了pip3。 解决:创建一个pip的软链接(别名)。# 找到 pip3 的位置 which pip3 # 假设输出是 /usr/bin/pip3 # 创建一个名为 pip 的链接指向 pip3 sudo ln -s /usr/bin/pip3 /usr/bin/pip
-
问题:
python命令指向 Python 2,我想让它指向 Python 3。 原因:python命令默认指向了旧版的 Python 2。 解决:同样使用软链接。# 找到 python3 的位置 which python3 # 假设输出是 /usr/bin/python3 # 创建一个名为 python 的链接指向 python3 sudo ln -s /usr/bin/python3 /usr/bin/python
警告:这样做可能会破坏依赖于 Python 2 的系统脚本,在不确定的情况下,建议始终使用
python3和pip3。
| 配置目标 | 推荐方法 | 配置文件 | 生效方式 |
|---|---|---|---|
个人 python/pip 命令 |
修改 PATH |
~/.bashrc 或 ~/.zshrc |
source 文件或重启终端 |
| 个人模块搜索路径 | 修改 PYTHONPATH |
~/.bashrc 或 ~/.zshrc |
source 文件或重启终端 |
所有用户 python/pip 命令 |
修改 PATH |
/etc/profile.d/my_python.sh |
重启系统或重新登录 |
| 所有用户模块搜索路径 | 修改 PYTHONPATH |
/etc/profile.d/my_python.sh |
重启系统或重新登录 |
对于绝大多数个人开发者来说,编辑用户目录下的 .bashrc 或 .zshrc 文件是最安全、最常用、最推荐的方法。
