杰瑞科技汇

Python/Linux环境变量配置有哪些关键步骤?

什么是环境变量?

环境变量是操作系统在运行时使用的一些值,它们包含了关于系统环境、程序运行路径、用户设置等信息。

Python/Linux环境变量配置有哪些关键步骤?-图1
(图片来源网络,侵删)

你可以把它们想象成全局的配置信息,操作系统和所有在它上面运行的程序都可以读取这些信息。

常见的环境变量:

  • PATH: 最重要的环境变量之一,它是一个目录列表,当你在终端输入一个命令时,系统会按顺序在这些目录里查找对应的可执行文件。
  • HOME: 当前用户的主目录(/home/your_username)。
  • SHELL: 当前用户默认使用的 Shell(/bin/bash/bin/zsh)。
  • PYTHONPATH: Python 用来查找模块(.py 文件)的路径列表,当你 import 一个模块时,Python 会在这里面寻找。
  • VIRTUAL_ENV: 如果你在一个虚拟环境中,这个变量会指向虚拟环境的路径,用来标识当前 Python 解释器来自哪个虚拟环境。

为什么需要配置环境变量?

  1. 让系统找到你的程序:如果你自己编译或下载了一个程序(比如某个版本的 Python),你需要把它所在的 bin 目录添加到 PATH 中,这样你才能在任何地方直接通过命令名(如 python3)来运行它,而不是输入完整的路径 /path/to/your/program/python3
  2. 让 Python 找到你的模块:如果你有一个自己写的工具库,不想把它安装到系统全局的 Python 环境中,你可以把这个库的父目录添加到 PYTHONPATH,这样你就可以在任何 Python 脚本中 import 你的库了。
  3. 存储配置信息:在开发中,经常把敏感信息(如数据库密码、API Key)或需要在不同环境(开发、测试、生产)中切换的配置信息存储在环境变量中,而不是硬编码在代码里,这提高了代码的安全性和可移植性。

如何查看环境变量?

查看所有环境变量

使用 printenvenv 命令。

# 打印所有环境变量
printenv
# 或者使用 env
env

查看单个环境变量

使用 echo 命令,并在变量名前加上 符号。

echo $PATH
echo $HOME

查找可执行文件路径

whichtype 命令可以告诉你当前系统使用的某个命令(如 python3)的完整路径。

Python/Linux环境变量配置有哪些关键步骤?-图2
(图片来源网络,侵删)
# 查找 python3 命令的路径
which python3
# type 命令提供更多信息
type python3
# 输出示例:
# python3 is /usr/bin/python3

如何配置环境变量?

环境变量的配置分为两种:临时配置永久配置

场景1:临时配置(仅对当前终端会话有效)

当你关闭终端窗口后,这些配置就会失效,适用于临时测试或单次任务。

  • 设置变量export VAR_NAME="value"
  • 追加路径到 PATHexport PATH="$PATH:/your/new/path"

示例:

假设你下载了一个 Python 3.10 的安装包,解压后路径是 /home/user/Downloads/Python-3.10.0,它的可执行文件在 bin 目录下,你想临时使用它:

Python/Linux环境变量配置有哪些关键步骤?-图3
(图片来源网络,侵删)
# 进入你的 Python 解压目录的 bin 子目录
cd /home/user/Downloads/Python-3.10.0
# 将这个 bin 目录添加到 PATH 的末尾
export PATH="$PATH:$PWD/bin"
# 现在你可以直接使用 python3.10 了
python3.10 --version
# 这个设置只在当前终端窗口有效,关闭后,PATH 会恢复原样。

场景2:永久配置(推荐)

为了让配置永久生效,你需要将 export 命令写入系统的配置文件中,具体写入哪个文件,取决于你的需求。

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

这是最常见和最安全的做法,不会影响其他用户。

你需要修改用户主目录下的 Shell 配置文件,根据你使用的 Shell 不同,文件名也不同:

  • Bash Shell (最常见): ~/.bashrc
  • Zsh Shell: ~/.zshrc
  • Fish Shell: ~/.config/fish/config.fish

配置步骤 (以 Bash 为例):

  1. 打开配置文件: 使用 nanovim 等编辑器打开 ~/.bashrc 文件。 代表你的用户主目录。

    nano ~/.bashrc
  2. 在文件末尾添加配置: 将你的 export 命令添加到文件的最底部。

    # 在 ~/.bashrc 文件末尾添加以下内容:
    # 设置一个自定义的环境变量
    export MY_APP_ENV="development"
    # 将 Python 3.10 的路径添加到 PATH (假设你已经解压好了)
    export PATH="$PATH:/home/user/Downloads/Python-3.10.0/bin"
    # 将自定义模块库添加到 PYTHONPATH
    export PYTHONPATH="$PYTHONPATH:/home/user/my_python_libs"
  3. 保存并关闭文件: 在 nano 中,按 Ctrl + X,然后按 Y,最后按 Enter

  4. 让配置立即生效: 你可以关闭当前终端窗口并重新打开一个,或者使用 source 命令让配置立即在当前终端生效。

    # 让 ~/.bashrc 文件中的配置立即生效
    source ~/.bashrc
  5. 验证配置: 在新的终端会话中,检查变量是否已设置。

    echo $MY_APP_ENV
    # 应该输出: development
    which python3.10
    # 应该输出: /home/user/Downloads/Python-3.10.0/bin/python3.10

B. 对所有用户生效(谨慎使用)

如果你想让系统里的所有用户都能使用某个程序,你需要修改系统的全局配置文件。

  • Bash: /etc/environment (用于设置简单的 KEY="value")
  • Bash: /etc/profile/etc/bash.bashrc (用于执行脚本和 export)

修改 /etc/environment (推荐用于全局变量):

  1. 使用 sudo 权限编辑文件。

    sudo nano /etc/environment
  2. 文件格式是 KEY="VALUE",每行一个,注意不要使用 export

    # 文件内容示例:
    PATH="/usr/local/bin:/usr/bin:/bin"
    MY_GLOBAL_APP="production"
  3. 保存后,需要重新登录才能生效。

修改 /etc/profile (用于执行脚本):

  1. 使用 sudo 编辑。

    sudo nano /etc/profile
  2. 在文件末尾添加你的脚本。

    # 在文件末尾添加
    export GLOBAL_PATH="/opt/my_app/bin"
    export PATH="$PATH:$GLOBAL_PATH"
  3. 保存后,使用 source /etc/profile 或重新登录使其生效。


Python 代码中如何读取环境变量?

在 Python 程序中,我们通常使用 os 模块来读取环境变量。

import os
# 读取单个环境变量
# 如果变量不存在,os.environ.get() 会返回 None
# 如果变量不存在,os.environ['VAR_NAME'] 会抛出 KeyError 异常
home_path = os.environ.get('HOME')
python_path = os.environ.get('PYTHONPATH')
print(f"HOME: {home_path}")
print(f"PYTHONPATH: {python_path}")
# 读取 PATH
path_list = os.environ.get('PATH').split(':')
print("\nPATH 中的目录列表 (前5个):")
print(path_list[:5])
# 检查虚拟环境
venv_path = os.environ.get('VIRTUAL_ENV')
if venv_path:
    print(f"\n当前运行在虚拟环境中,路径是: {venv_path}")
else:
    print("\n当前未在虚拟环境中运行")
# 在代码中使用环境变量设置数据库连接
# db_host = os.environ.get('DB_HOST', 'localhost') # DB_HOST 不存在,则使用默认值 'localhost'
# db_user = os.environ.get('DB_USER')
# db_password = os.environ.get('DB_PASSWORD')
# print(f"Connecting to database at {db_host} as user {db_user}...")

最佳实践和常见问题

  1. 优先使用用户级配置 (~/.bashrc):除非有特殊需求,否则不要修改系统级配置文件,以免影响其他用户或破坏系统稳定性。

  2. 使用 source 命令:修改配置文件后,记得用 source 或 命令让它在当前终端立即生效,而不是关闭再开。

  3. 检查优先级:如果你发现命令找不到,可能是 PATH 里的多个同名程序,系统会按顺序查找,排在前面的优先级更高,你可以用 which 命令确认当前使用的是哪个。

  4. 不要硬编码:在代码中,特别是密码、API Key 等敏感信息,永远不要直接写在代码里,始终从环境变量中读取。

  5. 使用 .env 文件:对于复杂的项目,推荐使用 python-dotenv 库,你可以在项目根目录创建一个 .env 文件来存储环境变量,然后在代码中加载它,这比直接修改系统配置文件更灵活、更安全。

    示例 .env 文件:

    DB_HOST=localhost
    DB_USER=myuser
    DB_PASSWORD=mysecretpassword

    Python 代码加载:

    from dotenv import load_dotenv
    import os
    # 加载 .env 文件中的变量
    load_dotenv()
    # 现在就可以像读取普通环境变量一样读取它们了
    db_host = os.environ.get('DB_HOST')
    print(f"DB_HOST from .env: {db_host}")

希望这份详细的指南能帮助你完全掌握在 Linux 环境下为 Python 配置环境变量!

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