杰瑞科技汇

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

核心概念:环境变量类型

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

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

    • 生效范围:仅对当前用户有效。
    • 配置文件:通常位于用户主目录下的 .bashrc, .zshrc, .profile 等文件中。
    • 优先级:每次用户登录或打开新的终端时,系统会加载这些配置文件,如果你修改了它们,需要重新加载打开一个新的终端才能生效。
    • 适用场景:个人开发环境配置,推荐使用这种方式。
  2. 系统级环境变量

    • 生效范围:对系统中的所有用户有效。
    • 配置文件:通常位于 /etc/environment/etc/profile 及其子目录(如 /etc/profile.d/)中。
    • 优先级:在用户级变量之前加载,修改后需要重启系统或重新登录才能生效。
    • 适用场景:系统管理员统一配置,确保所有用户都能访问某个工具。

最常见的场景:配置 Python 和 Pip 的命令别名

很多人会遇到 python 命令找不到,或者 python3 命令存在但 pip 命令不存在的问题,这是因为系统默认的 Python 版本可能不是你安装的版本,或者 pip 没有被正确添加到环境变量中。

步骤 1:确认 Python 和 Pip 的安装路径

找到你的 Python 和可执行文件(pip, pip3)的实际位置。

Linux Python环境变量如何正确配置?-图2
(图片来源网络,侵删)
# 查找 python3 的路径
which python3
# 输出示例: /usr/bin/python3
# 查找 pip3 的路径
which pip3
# 输出示例: /usr/bin/pip3
# 更通用的方法是使用 whereis
whereis python3
whereis pip3

步骤 2:将路径添加到用户级环境变量

我们使用最常用的 .bashrc 文件为例,如果你的终端是 Zsh,则编辑 .zshrc

  1. 打开配置文件

    nano ~/.bashrc

    你也可以使用 vimgedit 等编辑器。

  2. 在文件末尾添加路径 在文件的最末尾,添加以下内容,请将 /usr/bin 替换为你上一步查找到的实际路径。

    Linux Python环境变量如何正确配置?-图3
    (图片来源网络,侵删)
    # 将 Python 和 Pip 的路径添加到 PATH 环境变量中
    # 注意:不要直接覆盖整个 PATH,而是在原有值后面添加
    export PATH="$PATH:/usr/bin"

    重要提示

    • PATH 是一个列表,用冒号 分隔。
    • $PATH 必须放在最前面,这样系统会优先查找你之前已经配置好的路径,然后再查找你新添加的路径,这可以避免覆盖系统原有的重要命令。
    • 如果你安装了多个 Python 版本(比如通过 pyenv),你可能需要把新版本 Python 的路径(如 ~/.pyenv/shims)添加到 PATH 的最前面,以实现版本切换。
  3. 保存并退出

    • nano 中,按 Ctrl + X,然后按 Y,最后按 Enter
  4. 重新加载配置文件 让当前终端会话立即生效,无需重启。

    source ~/.bashrc

    或者,直接关闭当前终端,再打开一个新的终端。

  5. 验证配置

    # 检查 PATH 变量是否更新
    echo $PATH
    # 你应该能在输出的末尾看到你添加的路径
    # 检查命令是否可用
    python3 --version
    pip3 --version

其他常见环境变量配置

除了 PATH,还有其他一些重要的环境变量。

PYTHONPATH:Python 的模块搜索路径

当你在 Python 中 import 一个模块时,Python 会在以下路径中寻找:

  1. 当前目录
  2. PYTHONPATH 中列出的所有目录
  3. 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

这种方式同样需要重启或重新登录才能生效。


常见问题排查

  1. 问题:我改了 .bashrc,但 source 后还是不生效。 原因:你可能不是在 .bashrc 中修改的,而是在 .profile.zshrc 中,或者你的终端是 sh 而不是 bash解决:检查你使用的 Shell 类型:echo $SHELL,根据 Shell 类型,编辑对应的配置文件(.bashrc, .zshrc, .profile)。

  2. 问题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
  3. 问题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 的系统脚本,在不确定的情况下,建议始终使用 python3pip3

配置目标 推荐方法 配置文件 生效方式
个人 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 文件是最安全、最常用、最推荐的方法

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