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

关于pytorch虚拟环境及具体bug问题修改

         本篇博客包含对于虚拟环境概念的讲解和代码实现过程中相关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.dtcms.com/a/284148.html

相关文章:

  • 摩尔投票法:高效寻找数组中的多数元素
  • Rabbitmq Direct Exchange(直连交换机)可以保证消费不被重复消费吗,可以多个消费者,但是需要保证同一个消息,不会被投递给多个消费者
  • 力扣.1312让字符串成为回文串的最少插入次数力扣.105从前序和中序遍历构造二叉树牛客.拼三角力扣.57插入区间​编辑
  • Vue3入门-计算属性+监听器
  • 分解质因数算法:从基础实现到高级应用
  • 【中等】题解力扣16:最接近的三数之和
  • 区块链共识机制:技术演进与行业突破
  • 【后端】.NET Core API框架搭建(8) --配置使用RabbitMQ
  • 算法训练营day23 39. 组合总和、 40.组合总和II 、131.分割回文串
  • 单发测量突破能域限制!Nature发布X射线拉曼超分辨新范式
  • Linux内存系统简介
  • 解决Python爬虫访问HTTPS资源时Cookie超时问题
  • Py-Clipboard :iOS与Windows互相共享剪贴板(半自动)
  • QT配置Quazip外部库
  • C++性能优化
  • 2021市赛复赛 初中组
  • 保持视频二维码不变,如何更新视频内容,节省物料印刷成本
  • 氧化锌避雷器具备的功能
  • Redis原理之主从复制
  • Visual Studio 的常用快捷键
  • 7.17 Java基础 | 集合框架(下)
  • 数据结构 栈(2)--栈的实现
  • NO.7数据结构树|线索二叉树|树森林二叉树转化|树森林遍历|并查集|二叉排序树|平衡二叉树|哈夫曼树|哈夫曼编码
  • 突破AI模型访问的“光标牢笼”:长上下文处理与智能环境隔离实战
  • 网络基础11 上公网--Internet接入技术
  • 扣子工作流的常见节点
  • AutoGen-AgentChat-13-多智能体相互辩论
  • 船舶机械零件的深孔工艺及检测方法 —— 激光频率梳 3D 轮廓检测
  • istio如何自定义重试状态码
  • JAVA面试宝典 -《缓存架构:穿透 / 雪崩 / 击穿解决方案》