当前位置: 首页 > news >正文

环境变量配置与问题解决

目录

方法

配置了还是运行不了想要的东西 

解决方案

 为什么

 解决方案


方法

方法一:此电脑右击-属性-相关链接-高级系统设置-环境变量(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.pngresult 变量将包含一个 CompletedProcess 对象,你可以通过这个对象来检查命令的返回码和输出。

 

这两行代码是在设置和修改环境变量 PATH,以便 Python 脚本能够找到并执行 Graphviz 的命令行工具(如 dot)。以下是详细解释:

 

graphviz_path = 'C:\\Program Files (x86)\\Graphviz\\bin'

这行代码定义了一个变量 graphviz_path,它存储了 Graphviz 的 bin 目录的路径。bin 目录通常包含 Graphviz 的可执行文件,例如 dotneatocirco 等。

 

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'] 不显示你添加的路径:

  1. 脚本运行时的环境变量:如果你在脚本运行之后添加了路径到系统的环境变量,那么这个更改不会影响到已经运行的脚本。脚本开始执行时的环境变量是固定的。

  2. 环境变量更改未生效:在某些情况下,更改环境变量后可能需要重启命令提示符窗口或重启计算机才能使更改生效。

  3. 不同的环境:如果你在不同的环境中修改了环境变量(例如,在命令提示符中或通过系统设置),那么这些更改可能不会影响到其他环境(例如,Python 脚本或 IDE)。

  4. 权限问题:在某些情况下,可能需要管理员权限来修改环境变量,特别是对于系统范围内的更改。

为了确保 Python 脚本能看到最新的环境变量,你可以采取以下措施:

  • 重启命令提示符或 IDE:在修改环境变量后,关闭并重新打开命令提示符窗口或 IDE,这样它们就会使用新的环境变量设置。

  • 在脚本中显式设置:正如你之前在脚本中所做的那样,显式地将路径添加到 os.environ['PATH'] 中,确保脚本能够访问到 Graphviz 的可执行文件。

  • 检查环境变量更改是否生效:在命令提示符中运行 echo %PATH%(在 Windows 上)或 echo $PATH(在 Unix/Linux 上)来检查环境变量是否已经更新。

记住,环境变量的更改不会立即影响到所有正在运行的程序,只有新启动的程序才会使用新的环境变量设置。

 解决方案

重启jupyter,真的可以了 

相关文章:

环境变量配置与问题解决

目录 方法 配置了还是运行不了想要的东西 解决方案 为什么 解决方案 方法 方法一:此电脑右击-属性-相关链接-高级系统设置-环境变量(N)-系统变量里面找到Path-三个确定】 方法二:winr cmd 黑框输入sysdm.cpl,后面…...

pytorch2.5实例教程

以下是再次为你提供的一个详细的PyTorch使用教程: 一、安装PyTorch 环境准备 确保系统已安装合适版本的Python(推荐3.10及以上)。 安装方式 CPU版本 对于Linux和macOS: 使用命令 pip install torch torchvision torchaudio。 对…...

【开源免费】基于SpringBoot+Vue.JS智慧图书管理系统(JAVA毕业设计)

本文项目编号 T 152 ,文末自助获取源码 \color{red}{T152,文末自助获取源码} T152,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

基于自然语言处理的垃圾短信识别系统

基于自然语言处理的垃圾短信识别系统 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录 设计题目设计目的设计任务描述设计要求输入和输出…...

Node.js HTTP模块详解:创建服务器、响应请求与客户端请求

Node.js HTTP模块详解:创建服务器、响应请求与客户端请求 Node.js 的 http 模块是 Node.js 核心模块之一,它允许你创建 HTTP 服务器和客户端。以下是一些关键知识点和代码示例: 1. 创建 HTTP 服务器 使用 http.createServer() 方法可以创建…...

Day 17 卡玛笔记

这是基于代码随想录的每日打卡 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组…...

深圳大学-智能网络与计算-实验一:RFID原理与读写操作

实验目的与要求 掌握超高频RFID标签的寻卡操作。掌握超高频RFID标签的读写操作。掌握超高频RFID标签多张卡读取时的防冲突机制。 方法,步骤 软硬件的连接与设置超高频RFID寻卡操作超高频RFID防冲突机制超高频RFID读写卡操作 实验过程及内容 一.软硬…...

⚡C++ 中 std::transform 函数深度解析:解锁容器元素转换的奥秘⚡【AI 润色】

在 C 编程的世界里&#xff0c;我们常常需要对容器中的元素进行各种转换操作。无论是将数据进行格式调整&#xff0c;还是对元素进行数学运算&#xff0c;高效的转换方法都是提升代码质量和效率的关键。std&#xff1a;&#xff1a;transform函数作为 C 标准库<algorithm &g…...

【miniconda】:langraph的windows构建

langraph需要python3.11 langraph强烈建议使用py3.11 默认是3.12 官方 下载仓库 下载老版本的python (后续发现新版miniconda也能安装老版本的python) 在这里...

(k8s)k8s部署mysql与redis(无坑版)

0.准备工作 在开始之前&#xff0c;要确保我们的节点已经加入网络并且已经准备好&#xff0c;如果没有可以去看我前面发表的踩坑与解决的文章&#xff0c;希望能够帮到你。 1.k8s部署redis 1.1目标 由于我们的服务器资源较小&#xff0c;所以决定只部署一个redis副本&#x…...

Git常用操作指令

初始化配置 # 配置全局用户名和邮箱 git config --global user.name "账号" git config --global user.email "邮箱"# 查看配置信息 git config --list仓库初始化创建新的 Git 仓库&#xff1a; # 初始化新仓库 git init# 克隆远程仓库 git clone URL状态…...

新手理解:Android 中 Handler 和 Thread.sleep 的区别及应用场景

新手理解&#xff1a;Android 中 Handler 和 Thread.sleep 的区别及应用场景 Handler 是啥&#xff1f;Handler 的几个核心功能&#xff1a; Thread.sleep 是啥&#xff1f;Thread.sleep 的核心特点&#xff1a; 两者的区别它们的应用场景1. Handler 的应用场景2. Thread.sleep…...

智能安全策略-DPL

一、华三防火墙-接口的概念。 1、接口。 1. 什么是接口&#xff1f; 接口就像是防火墙的“门”&#xff0c;用来连接不同的网络设备&#xff0c;比如电脑、路由器、服务器等。通过这些“门”&#xff0c;数据&#xff08;比如网页、视频、文件&#xff09;才能进出防火墙。 …...

差分进化算法 (Differential Evolution) 算法详解及案例分析

差分进化算法 (Differential Evolution) 算法详解及案例分析 目录 差分进化算法 (Differential Evolution) 算法详解及案例分析1. 引言2. 差分进化算法 (DE) 算法原理2.1 基本概念2.2 算法步骤3. 差分进化算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 单目标优化…...

Alibaba Spring Cloud 十七 Sentinel熔断降级

概述 在微服务架构中&#xff0c;熔断与降级是保证系统稳定性的重要机制&#xff0c;能有效防止故障蔓延或雪崩效应。当某个服务出现异常、延迟过高或错误率过高时&#xff0c;触发熔断保护&#xff0c;将该服务“隔离”一段时间&#xff0c;避免影响整体系统的吞吐和可用性。 …...

LetsWave脑电数据简单ERP分析matlab(一)

LetsWave是基于matlab的一款工具包&#xff0c;类似eeglab&#xff0c;也可以对数据进行预处理。习惯使用eeglab做数据预处理的&#xff0c;可以先在eeglab中做预处理&#xff0c;然后可以保存为*.set格式&#xff0c;最后在letswave中画图。 letswave下载地址&#xff1a;htt…...

设计模式Python版 工厂方法模式

文章目录 前言一、工厂方法模式二、工厂方法模式示例三、工厂方法模式客户端改进四、工厂方法模式隐藏工厂方法&#xff08;可选&#xff09; 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方…...

贝叶斯优化相关

贝叶斯优化相关 python中有很多模块支持贝叶斯优化&#xff0c;如bayesian-optimization、hyperopt&#xff0c;比较好用的是hyperopt&#xff0c;下面是对hyperopt文章的翻译&#xff0c;原文地址如下 https://districtdatalabs.silvrback.com/parameter-tuning-with-hyperop…...

【Matlab高端绘图SCI绘图全家桶更新版】在原60种绘图类型基础上更新

俗话说&#xff0c;一图胜千言。数据可视化便是将数据通过图形化的方式展现出来&#xff0c;它更加便于我们观察数据蕴含的的规律&#xff0c;洞察了数据蕴含的规律后&#xff0c;从而使我们能够做更好的进行科研表达和学术写作。 科研过程中&#xff0c;绘图是一项非常重要的…...

如何构建一个 GraphRAG 系统

构建一个 GraphRAG 系统以提升传统 RAG&#xff08;检索增强生成&#xff09;模型的性能&#xff0c;需要结合知识图谱和生成式语言模型的能力&#xff0c;以下是实现的关键步骤和方法&#xff1a; 1. 数据准备 (1) 收集数据 确保有足够的高质量文本数据源&#xff0c;如&…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...