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

网站的资讯内容seo企业网络推广培训

网站的资讯内容,seo企业网络推广培训,天津网站建设外贸,建筑费用明细表模板文章目录 问题描述原因分析解决思路改进实现思路 配置文件内容 问题描述 使用 tmux 创建子窗口时,虽然子窗口能够继承父窗口的 Conda 环境变量,但实际运行的 Python 版本仍然是 base 环境下的,说明子窗口并未真正激活父窗口的 Conda 环境 原…

文章目录

    • 问题描述
    • 原因分析
    • 解决思路
    • 改进
      • 实现思路
    • 配置文件内容

问题描述

使用 tmux 创建子窗口时,虽然子窗口能够继承父窗口的 Conda 环境变量,但实际运行的 Python 版本仍然是 base 环境下的,说明子窗口并未真正激活父窗口的 Conda 环境

原因分析

image-20250625110453964

image-20250625110507774

解决思路

  1. 手动方式:在父终端中先执行 conda deactivate,然后再启动 tmux,此时子窗口将不会继承任何 Conda 环境;进入子窗口后,可手动执行 conda activate xxx 切换至所需环境,确保环境干净且不受父窗口影响

  2. 自动化方式:在 .zshrc 中重命名 tmux 命令如下:

    tmux() {conda deactivatecommand tmux "$@"
    }
    

    这样在执行 tmux 前会自动退出当前 Conda 环境,避免 Conda 环境信息被错误地传递至子窗口。进入子窗口后,可手动激活需要的 Conda 环境。

    image-20250625110839657

改进

我想要同时在父窗口和子窗口中使用conda环境:

  • 当打开一个新终端时,自动激活我常用的 Conda 环境 myenv
  • 当使用 tmux 创建子窗口时,子窗口能够自动继承父窗口的 Conda 环境,并确保 python 和其他命令真正指向该环境,而不是 fallback 到 base

实现思路

  • 为了实现新终端默认进入 myenv 环境,我在 .zshrc 中添加如下逻辑:

    if [ -z "$TMUX" ]; then# not in tmux, activate myenv defaultconda activate myenv
    fi
    

    通过判断环境变量 $TMUX,确保这段激活只在非 tmux 会话中执行,避免干扰 tmux 子窗口的环境管理

  • 为了让tmux子窗口继承父窗口的conda环境,首先需要让tmux子窗口获得父窗口的conda环境信息,即$CONDA_DEFAULT_ENV。最初我尝试在 ~/.tmux.conf 中添加:

    set -g update-environment "CONDA_PREFIX CONDA_DEFAULT_ENV PATH"
    

    该配置用于让 tmux 子窗口继承指定的环境变量。但实际测试发现:$CONDA_DEFAULT_ENV 没能被传递给子窗口,子窗口下执行echo $CONDA_DEFAULT_ENV的结果是base,说明这种传递环境信息的方式是无效的(为什么?)

    为了解决这个问题,我重命名了 tmux 命令,在进入 tmux 前显式记录当前 Conda 环境名,并通过自定义环境变量 CONDA_PREV_ENV 传递给子窗口:

    tmux() {export CONDA_PREV_ENV="$CONDA_DEFAULT_ENV"command tmux "$@"
    }
    

    然后在 .zshrc 中增加如下逻辑,用于在 tmux 子窗口中识别并恢复环境:

    . ~/study/Coding/anaconda3/etc/profile.d/conda.shif [ -z "$TMUX" ]; then# not in tmux, activate myenv defaultconda activate myenv
    else# in tmux, use main pannel's envif [ -n "$CONDA_PREV_ENV" ]; thenconda deactivateconda activate "$CONDA_PREV_ENV"fi
    fi
    

    这里要注意:

    • tmux() 函数在父窗口中执行,负责记录环境变量;
    • .zshrc 中的判断逻辑会在每个新 shell(包括 tmux 子窗口)启动时执行;
    • 子窗口会读取 CONDA_PREV_ENV 并重新激活对应环境,确保 pythonPATH 等变量指向正确位置。
  • 为了确保.zshrc在tmux启动时被正确加载,需要在.tmux.conf中添加以下配置:

    set-option -g default-command "zsh -i"
    

    该命令确保 tmux 启动的 shell 是交互式的,从而执行 .zshrc 并完成 Conda 环境的初始化逻辑。

    image-20250625111620241

配置文件内容

完整的.tmux.conf:

# 这是我自己的tmux配置,可以忽略
set -g default-terminal "screen-256color"
set -g prefix C-x
unbind C-b
bind C-x send-prefix
#set swap pane key
bind-key k select-pane -U
bind-key j select-pane -D
bind-key h select-pane -L
bind-key l select-pane -R# 这段代码必须加入到你的tmux配置文件中
set-option -g default-command "zsh -i"

完整的.zshrc:

# 只展示和conda环境相关的内容
. ~/study/Coding/anaconda3/etc/profile.d/conda.shif [ -z "$TMUX" ]; then# not in tmux, activate myenv defaultconda activate myenv
else# in tmux, use main pannel's envif [ -n "$CONDA_PREV_ENV" ]; thenconda deactivateconda activate "$CONDA_PREV_ENV"fi
fi# tmux alias
tmux() {export CONDA_PREV_ENV="$CONDA_DEFAULT_ENV"command tmux "$@"
}
http://www.dtcms.com/wzjs/834957.html

相关文章:

  • 网站 版式制作网站哪家便宜
  • 一站式网站建设用途网站一键提交
  • 网站如何快速备案微信网站搭建教程
  • 西安做网站选哪家临淄关键词网站优化首选公司
  • 手机app开发网站模板长春生物新冠疫苗
  • 保险代理人做网站标书制作培训课程
  • 大作业做网站南宁网站忧化
  • 企业网站的功能列表dw软件怎么制作网页
  • 政法门户网站建设情况wordpress导航
  • asp网站搭建软件网站排名优化工具
  • 深圳手机端网站建设模板宁波市建设工程监理协会网站
  • 广州网站推广哪家好怎么在wordpress上设计
  • 天河电子商务网站建设WordPress二级目录404
  • 网站定制排名网站建设先进个人典型材料
  • 哪有可以专门做外包项目的网站做网络平台需要什么条件
  • 淄博学校网站建设公司天津和平做网站
  • 怎么做网站vip并且收费贵州省建设项目验收备案网站
  • 做网站 源代码网站开发选题依据
  • 域名和空间都有了怎么做网站wordpress登录后可见
  • 网站制作完成后为了百度搜索引擎推广
  • 淘宝做网站为什么那么便宜前端网站效果有哪些
  • 深圳专业制作网站的公司哪家好WordPress潮流媒体主题
  • 德州网站制作哪家好网站建设需要参考哪些文献
  • 建行深圳网站做彩票网站程序违法吗
  • 建设网站工作室东莞做棋牌网站建设
  • 广州网站设计公司兴田德润活动东乡网站建设
  • 怎么建设两个大淘客网站网站建设分金手指专业十二
  • 东莞南城网站建设村建站全称
  • 大理做网站哪家好网站开发提成
  • 广西建工集团官网杨和关键词优化