目录
方法
配置了还是运行不了想要的东西
解决方案
为什么
解决方案
方法
方法一:此电脑右击-属性-相关链接-高级系统设置-环境变量(N)-系统变量里面找到Path-三个确定】
方法二:win+r cmd 黑框输入sysdm.cpl,后面同上
配置了还是运行不了想要的东西
解决方案
手动添加:
代码前加
import os
import subprocess
# 设置 Graphviz 的路径
graphviz_path = 'C:\\Program Files (x86)\\Graphviz\\bin'
os.environ['PATH'] += os.pathsep + graphviz_path
# 使用 subprocess 运行 dot 命令
result = subprocess.run(['dot', '-Tpng', 'input.dot', '-o', 'output.png'], capture_output=True)
或
import os
import subprocess
# 设置 Graphviz 的路径
graphviz_path = 'C:\\Program Files (x86)\\Graphviz\\bin'
os.environ['PATH'] += os.pathsep + graphviz_path
也行。 即给os.environ[PATH]添加你要填接的路径,该路径内部有你想要的exe文件
浅浅的解释
import os
这行代码导入了 Python 的标准库 os
,它提供了许多与操作系统交互的函数。
import subprocess
这行代码导入了 Python 的 subprocess
模块,它允许你启动新的应用程序,连接到它们的输入/输出/错误管道,并获取它们的返回码。
# 设置 Graphviz 的路径
graphviz_path = 'C:\\Program Files (x86)\\Graphviz\\bin'
这行代码定义了一个变量 graphviz_path
,其值为 Graphviz 安装目录下的 bin
文件夹的路径。这个路径是 Graphviz 的可执行文件(如 dot
)所在的位置。
os.environ['PATH'] += os.pathsep + graphviz_path
这行代码通过 os.environ
修改了环境变量 PATH
。
os.pathsep
是一个字符串,表示当前平台(在 Windows 上是分号 ;
)用于分隔路径的字符。
这行代码将 Graphviz 的 bin
目录添加到系统的 PATH
环境变量中,这样 Python 的 subprocess
模块就能找到 dot
命令了。
# 使用 subprocess 运行 dot 命令
result = subprocess.run(['dot', '-Tpng', 'input.dot', '-o', 'output.png'], capture_output=True)
这行代码使用 subprocess.run
函数来运行 dot
命令。以下是参数的详细解释:
['dot', '-Tpng', 'input.dot', '-o', 'output.png']
是一个列表,其中包含了要运行的命令及其参数。dot
是 Graphviz 的命令行工具,-Tpng
表示输出格式为 PNG,input.dot
是输入文件名,-o output.png
表示输出文件名为output.png
。capture_output=True
是一个可选参数,它告诉subprocess.run
捕获命令的标准输出和标准错误输出,而不是将它们打印到控制台。
执行这行代码后,dot
命令会读取 input.dot
文件,生成一个 PNG 图片,并将其保存为 output.png
。result
变量将包含一个 CompletedProcess
对象,你可以通过这个对象来检查命令的返回码和输出。
这两行代码是在设置和修改环境变量 PATH
,以便 Python 脚本能够找到并执行 Graphviz 的命令行工具(如 dot
)。以下是详细解释:
graphviz_path = 'C:\\Program Files (x86)\\Graphviz\\bin'
这行代码定义了一个变量 graphviz_path
,它存储了 Graphviz 的 bin
目录的路径。bin
目录通常包含 Graphviz 的可执行文件,例如 dot
、neato
、circo
等。
os.environ['PATH'] += os.pathsep + graphviz_path
这行代码执行以下操作:
os.environ
是一个包含当前环境变量的字典。(“Path”)是我们需要的索引'PATH'
是环境变量之一,它包含了一系列由操作系统用来查找可执行文件的目录路径。+=
是一个操作符,用于将graphviz_path
添加到现有的PATH
环境变量中。os.pathsep
是一个字符串,表示当前操作系统用来分隔路径的字符。在 Windows 上,它是分号;
,而在 Unix/Linux 上,它是冒号:
。- 将
graphviz_path
添加到PATH
环境变量中意味着当你尝试运行一个命令(如dot
)时,操作系统会在这些目录中查找该命令的可执行文件。
通过这种方式,即使 Graphviz 的 bin
目录不在系统的默认 PATH
中,Python 脚本也能找到并执行 Graphviz 的命令行工具。这在运行需要 Graphviz 的脚本时非常有用,尤其是当这些脚本在命令行或自动化环境中运行时
为什么
当你在 Python 脚本中使用 os.environ['PATH']
来访问环境变量时,它反映的是在脚本开始执行时环境变量的状态。如果你在脚本运行之后改变了环境变量(例如,通过系统的环境变量设置界面),这些更改不会自动反映到已经运行的 Python 脚本中。
以下是几个可能的原因,解释为什么 os.environ['PATH']
不显示你添加的路径:
-
脚本运行时的环境变量:如果你在脚本运行之后添加了路径到系统的环境变量,那么这个更改不会影响到已经运行的脚本。脚本开始执行时的环境变量是固定的。
-
环境变量更改未生效:在某些情况下,更改环境变量后可能需要重启命令提示符窗口或重启计算机才能使更改生效。
-
不同的环境:如果你在不同的环境中修改了环境变量(例如,在命令提示符中或通过系统设置),那么这些更改可能不会影响到其他环境(例如,Python 脚本或 IDE)。
-
权限问题:在某些情况下,可能需要管理员权限来修改环境变量,特别是对于系统范围内的更改。
为了确保 Python 脚本能看到最新的环境变量,你可以采取以下措施:
-
重启命令提示符或 IDE:在修改环境变量后,关闭并重新打开命令提示符窗口或 IDE,这样它们就会使用新的环境变量设置。
-
在脚本中显式设置:正如你之前在脚本中所做的那样,显式地将路径添加到
os.environ['PATH']
中,确保脚本能够访问到 Graphviz 的可执行文件。 -
检查环境变量更改是否生效:在命令提示符中运行
echo %PATH%
(在 Windows 上)或echo $PATH
(在 Unix/Linux 上)来检查环境变量是否已经更新。
记住,环境变量的更改不会立即影响到所有正在运行的程序,只有新启动的程序才会使用新的环境变量设置。
解决方案
重启jupyter,真的可以了