如何使用Python将MySQL服务器bin路径添加到系统路径变量

问题描述 投票:0回答:1

我创建了一个自动脚本来安装和启动 MySQL 服务器 其中我有最后一步将 MySQL bin 目录添加到系统变量

这是该代码的片段:

try:
    command = f'setx PATH "%PATH%;{bin_path}"'

    process = subprocess.Popen(['runas', '/user:Administrator', 'cmd', '/c', command],
                               shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

    stdout, stderr = process.communicate()

    if process.returncode == 0:
        print("Directory added to PATH successfully.")
    else:
        print(f"Adding directory to PATH failed: {stderr}")
except Exception as e:
    print(f"An error occurred: {e}")

这里的bin_path是“C:\Program Files\MySQL\MySQL Server 8.0 in

代码似乎是正确的,但它不起作用 还可以通过在命令提示符中执行命令来执行它,但在 python 中它不起作用 我不知道我哪里错了

我尝试了上面提到的代码似乎可以通过正常的命令提示符工作,但不能使用 python 子进程工作。 我想解决添加到路径问题

python mysql subprocess system-variable setx
1个回答
0
投票

您面临的问题可能是由于如何使用 subprocess.Popen 执行 runas 命令。

要使用Python的子进程将目录添加到PATH,可以使用以下方法:

import subprocess

bin_path = "C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin"

# Run the command to add the directory to PATH using setx
command = f'setx PATH "%PATH%;{bin_path}"'
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

stdout, stderr = process.communicate()

if process.returncode == 0:
    print("Directory added to PATH successfully.")
else:
    print(f"Adding directory to PATH failed: {stderr.decode('utf-8')}")

在此代码中:

  • bin_path 被正确转义为 \ 来表示反斜杠 在文件路径中。
  • 直接使用subprocess.Popen执行setx命令,而不使用runas。
  • 使用以下命令捕获标准输出和标准错误 沟通()。
  • 检查returncode以确定该命令是否 执行成功与否。

确保您以管理权限运行 Python 脚本,以便它可以修改系统环境变量。另外,通过在常规命令提示符中测试 setx 命令本身,确保它没有问题。

如果您仍然遇到问题,可能与特定的系统设置或权限有关,您可能需要进一步调查。

© www.soinside.com 2019 - 2024. All rights reserved.