我创建了一个自动脚本来安装和启动 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 子进程工作。 我想解决添加到路径问题
您面临的问题可能是由于如何使用 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')}")
在此代码中:
确保您以管理权限运行 Python 脚本,以便它可以修改系统环境变量。另外,通过在常规命令提示符中测试 setx 命令本身,确保它没有问题。
如果您仍然遇到问题,可能与特定的系统设置或权限有关,您可能需要进一步调查。