杰瑞科技汇

python修改python的环境变量

  1. 修改当前 Python 脚本运行时的环境变量(只影响当前进程及其子进程)。
  2. 修改整个操作系统的环境变量(永久性修改,影响所有新打开的终端和程序)。

下面我将详细解释这两种情况,并提供不同操作系统(Windows, macOS, Linux)下的具体操作方法。

python修改python的环境变量-图1
(图片来源网络,侵删)

修改当前 Python 脚本运行时的环境变量

这是最常见的需求,通常是为了让当前运行的程序能够找到某个特定的库、可执行文件或配置文件,这种修改是临时性的,只对当前 Python 进程及其创建的子进程有效,程序结束后修改会失效。

在 Python 中,我们使用 os 模块来操作环境变量。

核心函数:

  • os.environ: 一个 os._Environ 对象,它就像一个字典,可以用来获取和设置环境变量。
  • os.environ['KEY'] = 'value': 设置一个环境变量。
  • os.environ.get('KEY', 'default_value'): 获取一个环境变量,如果不存在则返回默认值。
  • del os.environ['KEY']: 删除一个环境变量。

示例代码:

import os
import sys
# --- 1. 获取并打印一个环境变量 ---
# 获取 Python 的可执行文件路径
python_path = os.environ.get('PYTHONPATH')
print(f"原始的 PYTHONPATH: {python_path}")
# --- 2. 设置一个新的环境变量 ---
# 假设我们有一个自定义的库路径
my_library_path = '/path/to/my/custom/libraries'
os.environ['MY_CUSTOM_LIB'] = my_library_path
print(f"已设置 MY_CUSTOM_LIB: {os.environ['MY_CUSTOM_LIB']}")
# --- 3. 修改一个已存在的环境变量 ---
# 向 PYTHONPATH 添加一个新路径
new_path_to_add = '/another/path'
if python_path:
    # PYTHONPATH 已存在,在其后追加
    os.environ['PYTHONPATH'] = f"{python_path}{os.pathsep}{new_path_to_add}"
else:
    # PYTHONPATH 不存在,直接设置
    os.environ['PYTHONPATH'] = new_path_to_add
print(f"修改后的 PYTHONPATH: {os.environ['PYTHONPATH']}")
# --- 4. 验证子进程是否能获取到修改后的环境变量 ---
# 使用 subprocess 模块启动一个子进程来打印环境变量
import subprocess
print("\n--- 在子进程中打印环境变量 ---")
subprocess.run([sys.executable, "-c", "import os; print('子进程中的 MY_CUSTOM_LIB:', os.environ.get('MY_CUSTOM_LIB')); print('子进程中的 PYTHONPATH:', os.environ.get('PYTHONPATH'))"])
# --- 5. 删除一个环境变量 ---
if 'MY_CUSTOM_LIB' in os.environ:
    del os.environ['MY_CUSTOM_LIB']
    print("\n已删除 MY_CUSTOM_LIB")

重要提示:

  • os.pathsep 是一个跨平台的路径分隔符:
    • Windows 上是
    • macOSLinux 上是
    • 在拼接 PATHPYTHONPATH 这类变量时,使用 os.pathsep 可以保证代码在不同操作系统上都能正常工作。

永久修改操作系统的环境变量

这种修改会影响整个操作系统,之后所有新启动的终端、应用程序都会使用新的环境变量设置,这通常是为了方便全局使用某些命令行工具(如 git, node)或 Python 包。

python修改python的环境变量-图2
(图片来源网络,侵删)

方法 A:修改配置文件(推荐,适用于 macOS 和 Linux)

在类 Unix 系统(macOS, Linux)中,环境变量通常在 shell 的配置文件中设置,最常见的是 ~/.bash_profile, ~/.bashrc, ~/.zshrc (对于 macOS Catalina 及以后版本默认的 Zsh shell)。

步骤:

  1. 打开配置文件: 你可以使用 vim, nano 等文本编辑器,对于 Zsh 用户:

    nano ~/.zshrc
  2. 添加或修改环境变量: 在文件末尾添加以下内容。注意格式

    python修改python的环境变量-图3
    (图片来源网络,侵删)
    • export 关键字是必须的,它会使变量对当前 shell 及其所有子进程可用。
    • 等号 两边不能有空格
    # 设置一个新的环境变量
    export MY_NEW_VAR="hello world"
    # 修改 PATH 变量,在前面添加一个新路径
    # 使用 $(...) 语法可以获取现有 PATH 的值
    export PATH="/path/to/my/bin:$PATH"
    # 修改 PYTHONPATH
    export PYTHONPATH="/path/to/my/modules:$PYTHONPATH"
  3. 保存并关闭文件

  4. 让配置立即生效: 你可以关闭并重新打开终端,或者运行以下命令来让当前终端会话加载新的配置:

    source ~/.zshrc  # 如果使用的是 bash,则是 source ~/.bash_profile
  5. 验证: 在终端中输入 echo $VAR_NAME 来检查变量是否已设置。

    echo $MY_NEW_VAR
    echo $PATH

方法 B:通过图形界面(适用于 Windows 和 macOS)

Windows 10 / 11

  1. 打开“系统属性”

    • 右键点击“此电脑”或“我的电脑”,选择“属性”。
    • 点击左侧的“高级系统设置”。
    • (或者直接在开始菜单搜索“编辑系统环境变量”并打开它)。
  2. 编辑环境变量

    在弹出的“系统属性”窗口中,点击“环境变量...”按钮。

  3. 添加或修改变量

    • 你会看到两个部分:“用户变量”和“系统变量”。
      • 用户变量:只对当前登录的用户有效。
      • 系统变量:对所有用户和系统服务有效。
    • 在相应区域中,找到你要修改的变量(如 Path),点击“编辑...”。
    • 对于 Path 变量,点击“新建”来添加一个新的路径。
    • 对于其他变量(如 PYTHONPATH),如果不存在,点击“新建”并输入变量名和值;如果存在,点击“编辑”来修改。
  4. 保存

    依次点击所有窗口的“确定”来保存设置。

  5. 验证

    • 重要:打开一个新的命令提示符PowerShell 窗口(旧的窗口不会加载新变量),然后输入 echo %VAR_NAME% 来检查。
      echo %PYTHONPATH%

macOS

  1. 打开“系统设置”
  2. 进入“高级” -> “环境变量”。
  3. 你会看到一个列表,可以添加、编辑或删除变量。
    • 点击 号添加新变量。
    • 可以设置变量名和值。
    • 可以选择是针对“当前用户”还是“所有用户”。
  4. 重启终端 或重新登录以使更改生效。

总结与最佳实践

场景 方法 作用范围 持久性 推荐度
Python 脚本内 os.environ['VAR'] = 'value' 当前 Python 进程及其子进程 仅在程序运行期间 ⭐⭐⭐⭐⭐ (脚本内必备)
全局系统设置 修改 ~/.bashrc, ~/.zshrc 当前用户的所有终端和程序 永久 ⭐⭐⭐⭐ (类 Unix 系统)
全局系统设置 Windows 系统属性 / macOS 系统设置 当前用户或所有用户 永久 ⭐⭐⭐⭐ (图形化操作)

最佳实践建议:

  • 优先使用虚拟环境:对于 Python 项目管理,强烈推荐使用 venvconda 等工具创建虚拟环境,这可以让你为每个项目安装独立的包,而无需修改全局的 site-packagesPYTHONPATH,是解决依赖冲突的最佳方式。
  • 脚本内修改:如果你的脚本依赖于某个特定的外部路径(如配置文件、动态链接库),应在脚本启动时使用 os.environ 动态设置,而不是依赖用户的全局环境配置。
  • 谨慎修改全局环境:永久性地修改系统环境变量(尤其是 PATH)可能会影响其他程序,请确保你知道自己在做什么,如果只是为了某个项目,虚拟环境是更安全、更清洁的选择。
分享:
扫描分享到社交APP
上一篇
下一篇