本篇博客包含对于虚拟环境概念的讲解和代码实现过程中相关bug的解决

关于虚拟环境

        我的pytorch虚拟环境在D盘,相应python解释器也在D盘(一起),但是我的pycharm中的项目在C盘,使用的是pytorch的虚拟环境,这是为什么行得通呢?

        后来知道 Python 虚拟环境的核心逻辑是 “解释器与项目路径分离”,只要 PyCharm 能正确找到虚拟环境中的 Python 解释器,无论解释器和项目文件在哪个磁盘分区,都能正常工作。具体原因如下:

1. 虚拟环境的本质:独立的解释器与依赖库

        虚拟环境(如你在 D 盘的 PyTorch 环境)本质上是一个 包含独立 Python 解释器(python.exe)和依赖库文件夹(site-packages)的目录。例如,它的路径可能是:
D:\envs\pytorch-gpu\python.exe

        这个环境的核心作用是:

  • 提供一个独立的 Python 解释器,不依赖系统默认的 Python。
  • 所有安装的库(如 torchtensorboard)都保存在该环境的 site-packages 文件夹中(如 D:\envs\pytorch-gpu\Lib\site-packages)。

        只要 PyCharm 能通过路径找到这个 python.exe,就能调用该环境的解释器和依赖库,与项目文件(C 盘)的位置无关。

2. PyCharm 的工作逻辑:关联解释器而非依赖路径

        PyCharm 管理项目时,关键是 “指定项目使用哪个 Python 解释器”,而非 “解释器必须和项目在同一磁盘”。具体流程是:

1. 你在 PyCharm 中为项目指定了解释器路径(D 盘的 pytorch-gpu 环境)。

2. PyCharm 会记录这个路径,并在运行代码、安装依赖时,强制使用该解释器:

  • 当你在 PyCharm 终端运行 pip install xxx 时,实际调用的是 D:\envs\pytorch-gpu\Scripts\pip.exe,安装的库会存到 D 盘的 site-packages
  • 当你运行项目代码时,PyCharm 会用 D:\envs\pytorch-gpu\python.exe 执行 C 盘的项目文件(.py)。

        这种 “解释器在 D 盘,项目在 C 盘” 的分离,就像 “用 D 盘的播放器播放 C 盘的视频文件” 一样自然,完全不冲突。

3. 跨磁盘工作的底层原理

        文件读取机制:操作系统(Windows)允许程序跨磁盘读取文件,只要路径正确(例如,D 盘的 Python 解释器可以读取 C 盘的 .py 代码文件)。

        环境变量与路径解析:虚拟环境被激活时,PyCharm 会临时调整终端的环境变量,让 pythonpip 等命令指向 D 盘的解释器,确保所有操作都基于该环境。

关于tensorboard的实战bug问题

        原代码如下:

from torch.utils.tensorboard import SummaryWriter
# ctrl + 右键 也可以查看这个类的说明writer = SummaryWriter('log')# 指定日志保存目录# writer.add_image()
for i in range(100):writer.add_scalar('y=x', i, i) # 添加标量数据writer.close()

        在终端运行时,大家可以很清楚看到,使用python来运行和直接使用类来运行的差别,前者可以正常运行,后者会报错,找不到路径

(pytorch-gpu) PS C:\Users\admin\Desktop\huahuo\pytorch_learn\pycharm> python -m tensorboard.main --logdir=log
TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.19.0 at http://localhost:6006/ (Press CTRL+C to quit)(pytorch-gpu) PS C:\Users\admin\Desktop\huahuo\pytorch_learn\pycharm> tensorboard --logdir=log
tensorboard : 无法将“tensorboard”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ tensorboard --logdir=log
+ ~~~~~~~~~~~+ CategoryInfo          : ObjectNotFound: (tensorboard:String) [], CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException

        差别原因在于:在命令行中直接运行 tensorboard 命令和通过 Python 模块(python -m tensorboard.main)调用 TensorBoard 时,系统查找可执行文件的方式存在差异

PATH 环境变量方面

  • 当使用 python -m tensorboard.main 命令时,Python 会依据自身的模块搜索路径来查找 TensorBoard,这和环境变量 PATH 没有关系。

  • 而直接输入 tensorboard 命令时,系统会在 PATH 环境变量所列出的目录里查找对应的可执行文件。要是 TensorBoard 的可执行文件所在目录没有被包含在 PATH 中,就会出现找不到命令的错误。

Anaconda 环境的特性

  • Anaconda 环境在激活之后,会动态地对 PATH 进行修改,把环境中的 Scripts 目录添加进去。不过,这种修改有时候可能会失败或者不完整。

  • TensorBoard 的可执行文件一般位于 Anaconda 环境的 Scripts 文件夹中,比如:

C:\Users\admin\anaconda3\envs\pytorch-gpu\Scripts\tensorboard.exe

解决办法

方法 1:使用 Python 模块调用

        推荐继续采用 python -m tensorboard.main --logdir=log 这种方式来启动 TensorBoard,因为它不依赖 PATH 环境变量,所以更加可靠。

待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89478.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89478.shtml
英文地址,请注明出处:http://en.pswp.cn/web/89478.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

U盘量产工具与性能优化完全指南

本文还有配套的精品资源,点击获取 简介:U盘量产工具是IT行业中的专业软件,用于批量生产或修复U盘。安国和银灿是两个提供U盘量产工具的主控芯片制造商,提供初始化、格式化、分区管理、性能优化、故障修复、个性化定制、固件升级…

Golang http开发实战:构建RESTful API保姆级教程

目录 章节1:RESTful API的精髓与Go的Web开发哲学 RESTful API的设计原则 Go的http包核心组件 实战:第一个RESTful API端点 章节2:设计优雅的RESTful路由 路由设计的注意事项 使用Gorilla Mux实现动态路由 章节3:请求与响应的艺术:解析与格式化 解析请求数据 统一…

UGUI 性能优化系列:第一篇——基础优化与资源管理

UGUI 性能优化系列:第一篇——基础优化与资源管理 UGUI 性能优化系列:第二篇——Canvas 与 UI 元素管理 在 Unity 游戏中,用户界面(UI)是玩家与游戏交互的核心。然而,不当的 UGUI 使用常常成为游戏性能的…

多端协同的招聘系统源码开发指南:小程序+APP一体化设计

当下,很多企业选择搭建属于自己的多端协同招聘平台,尤其是中大型人力资源公司、连锁品牌企业,以及同城服务平台,更是将“小程序APP”一体化招聘系统视为提升效率、降低用工成本的利器。 今天,笔者将从源码开发的角度&a…

Maven 配置文件核心配置:本地仓库、镜像与 JDK 版本

Maven 配置文件核心配置:本地仓库、镜像与 JDK 版本 在 Maven 项目开发中,合理配置 settings.xml 文件能显著提升依赖管理效率。本文将聚焦本地仓库、镜像加速和 JDK 版本这三个核心配置,结合 IDEA 环境详细讲解配置方法与作用。 一、Maven 配…

【时时三省】(C语言基础)通过指针引用字符串

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省如在printf函数中输出一个字符串。这些字符串都是以直接形式(字面形式)给出的,在一对双撇号中包含若干个合法的字符。使用字符串的更加灵活方便的方法——通…

【Linux驱动-快速回顾】一文快速理解GIC内部寄存器对中断的控制

第一部分:GIC的功能和组成 1. GIC要解决的根本问题 在一个复杂的片上系统(SoC)中,有非常多的硬件模块(如定时器、串口、按键、DMA等),它们都需要在完成任务或遇到特定事件时通知CPU。同时&#…

【IoTDB 线上小课 17】开源 ≠ 免费,3 分钟总结开源商用指南

【IoTDB 视频小课】第十七期,解答你最关心的开源商业使用问题!关于 IoTDB,关于物联网,关于时序数据库,关于开源...一个问题重点,3-5 分钟,我们讲给你听:原来开源商业化有这么多规则开…

VUE项目学习笔记 v-for绑定数据,该数据异步获取,同时需要对v-for的DOM节点进行js操作

问题描述:项目里有一个轮播图,轮播图的图片数据从服务器获取,用v-for生成DOM在页面中显示,轮播图插件会通过new Swiper给DOM添加CSS、事件等,实现轮播效果。在这里存在操作顺序问题:当服务器返回图片数据后…

Science | 如何利用“T细胞+组蛋白乙酰化”两大国自然热点?T细胞耗竭机制与代谢-表观遗传调控的新范式

CD8⁺T细胞耗竭(T cell exhaustion)是肿瘤免疫治疗的核心瓶颈,其表观遗传重塑机制(如组蛋白修饰)是当前国自然重点资助的前沿方向。耗竭T细胞(TEX)是指在慢性感染(如持续性病毒感染&…

Logback 配置的利器:深入理解<property>与<variable>

在构建现代 Java 应用程序时,日志是不可或缺的一部分。一个健壮的日志系统不仅能帮助我们监控应用程序的运行状态,还能在问题发生时提供关键的诊断信息。Logback 作为 SLF4J 的一个流行实现,以其高性能和灵活的配置而广受开发者喜爱。 然而&a…

Java中excel字典转换

✅ 背景说明EasyExcel 原生的 ExcelProperty 注解不支持 dictType(不像那样有 Excel(dictType"xxx")),所以如果你想实现字典翻译功能,就需要自己实现 Converter 接口,比如 DictConvert。✅ 什么是 DictConve…

数据结构-3(双向链表、循环链表、栈、队列)

一、思维导图二、双向循环链表的判空、尾插、遍历(反向)、尾删class Node:def __init__(self, data):self.data dataself.next Noneself.prior Noneclass circularDoublyLinkedList():def __init__(self):self.head Noneself.tail Noneself.size 0def isEmpty(self):retu…

IDEA运行Tomcat一直提示端口被占用(也查不到该端口)

首先查看是否是因为Java程序异常终止,进程没有完全释放导致。打开资源管理器,找到所有的java.exe,强制结束任务。如果仍然不行,那就极可能还是开启了hyper-V虚拟化,查看排除的tcp端口范围端口号没被占用却提示占用&…

AWS Lambda 最佳实践:构建高效无服务器应用的完整指南

引言 AWS Lambda 作为无服务器计算的核心服务,让开发者能够专注于业务逻辑而无需管理服务器。本文将通过实际案例和代码示例,分享 Lambda 开发中的关键最佳实践。 1. 函数设计原则 单一职责原则 每个 Lambda 函数应该只做一件事,这样更容易测试、维护和扩展。 # ❌ 不推…

29、鸿蒙Harmony Next开发:深浅色适配和应用主题换肤

目录 应用深浅色适配 应用跟随系统的深浅色模式 应用主动设置深浅色模式 系统默认判断规则 使用建议与限制 设置应用内主题换肤 概述 自定义主题色 设置应用内组件自定义主题色 设置应用局部页面自定义主题风格 设置应用页面局部深浅色 系统缺省token色值 应用深浅…

源鉴SCA4.9︱多模态SCA引擎重磅升级,开源风险深度治理能力再次进阶

SCA技术已成为数字供应链开源治理的关键入口。源鉴SCA深度融合悬镜原创专利级AI智能代码疫苗技术,是国内首款集源码组件成分分析、代码成分溯源分析、制品成分二进制分析、容器镜像成分扫描、运行时成分动态追踪及开源供应链安全情报预警分析等六大核心引擎为一体的…

Git语义化提交规范及提交模板设置

Git语义化提交规范(Conventional Commits) 📚 常见的语义化提交类型包括:类型含义说明feat✨ 新增功能(feature)fix🐛 修复 bugdocs📚 修改文档(如 README)st…

用TensorFlow进行逻辑回归(五)

Softmax分类#List3-50%matplotlib inlineimport numpy as npimport tensorflow as tfimport matplotlib.pyplot as pltx1_label0 np.random.normal(1, 1, (100, 1))x2_label0 np.random.normal(1, 1, (100, 1))x1_label1 np.random.normal(5, 1, (100, 1))x2_label1 np.ran…

基于 Django + 协同过滤算法的电影推荐系统设计与实现

🎬 基于 Django 协同过滤算法的电影推荐系统设计与实现✍️ 本项目由成都理工大学宜宾校区的三位同学曾铭杨、杨皓麟、陈禧锦共同完成。项目以豆瓣电影数据为基础,通过协同过滤算法为用户构建个性化电影推荐服务,是一款集数据爬取、推荐算法…