win11优化pyenv-venv虚拟环境切换

news/2025/3/20 16:58:36/文章来源:https://www.cnblogs.com/xysgo/p/18783426

问题

使用 pyenv-venv activate env_name 命令激活虚拟环境后

  • 无法使用tab自动完善命令

  • 无法上下键切换历史命令

image-20250320163925155

脚本

#!/usr/bin/bashvenvs="/d/JavaProgramFiles/pyenv-win/pyenv-win-venv/envs"
# #!/bin/bashactivate () {# 设置 PATHORIGIN_PATH="${ORIGIN_PATH:-$PATH}"export PATH="$venvs/$curr_env/Scripts:$ORIGIN_PATH" # 加上虚拟环境路径# 设置 PYTHONHOMEif [ -n "${PYTHONHOME:-}" ] ; thenORIGIN_PYTHONHOME="${ORIGIN_PYTHONHOME:-$PYTHONHOME}"unset PYTHONHOMEfi# 设置 PS1if [[ "$PS1" != *"$curr_env"* ]]; thenORIGIN_PS1="${ORIGIN_PS1:-$PS1}"export PS1="curr_env: $curr_env$ORIGIN_PS1"fiecho "Virtual environment $curr_env activated."
}deactivate () {# 重置 PATHif [ -n "${ORIGIN_PATH:-}" ] ; thenPATH="${ORIGIN_PATH}"export PATHunset ORIGIN_PATHfi# 重置 PYTHONHOMEif [ -n "${ORIGIN_PYTHONHOME:-}" ] ; thenexport PYTHONHOME="${ORIGIN_PYTHONHOME}"unset ORIGIN_PYTHONHOMEfi# 重置 PS1if [ -n "${ORIGIN_PS1:-}" ]; thenexport PS1=$ORIGIN_PS1unset ORIGIN_PS1fiecho "Virtual environment $curr_env deactivated."unset curr_env
}curr_env=$1if [ -n "$curr_env" ]; thenif [ -d "$venvs/$curr_env" ]; thenactivateelseecho "Virtual environment '$curr_env' does not exist."fi
elsedeactivate
fi

原理

修改当前shell环境的环境变量PATH、PYTHONHOME、PS1

PATH: 查找命令的配置

PYTHONHOME: 防止python home变量影响(不确定是否有影响,抄官方的脚本)

PS1: 提示用户,当前正在使用的虚拟环境

前提

使用pyenv-venv管理虚拟环境,并且所有的虚拟环境都保存在一个目录下

参考文档

image-20250320164624397

使用

  1. 把上面的脚本复制到PATH范围内的目录中,脚本名称为 venv

    image-20250320165007549

  2. 任意打开一个bash脚本,在里面执行如下

    # 查看有哪些虚拟环境
    $ pyenv-venv list envs
    Envs installed:
    chatglm-6b
    global_env
    langchain_chatchat
    OCR2.0
    pytorch# 激活虚拟环境 pytorch,实际就是修改当前shell的PATH值,把虚拟环境的脚本目录添加到最前面了
    $ source venv pytorch
    Virtual environment pytorch activated.
    curr_env: pytorch
    # 可以直接切换其他虚拟环境
    $ source venv global_env
    Virtual environment global_env activated.
    curr_env: global_env
    # 退出虚拟环境,其实就是把PATH还原
    $ source venv 
    Virtual environment  deactivated.
    

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

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

相关文章

安装Harbor

环境:OS:Centos 7说明:需要docker和 docker compose[root@node1 data]# docker version Client: Docker Engine - CommunityVersion: 26.1.4API version: 1.45Go version: go1.21.11Git commit: 5650f9bBuilt: Wed Jun 5 11:32:04…

Linux学习路线

Linux 学习路线Linux 学习路线 by 程序员鱼皮💂 + 💻 = 👴🏽 建议先观看视频入门:https://www.bilibili.com/video/BV1ev411G7VE/ 为什么学 Linux? 相比于 Windows,Linux 免费、开源、安全、灵活、稳定、便于开发,所以更受企业青睐,甚至 90% 以上 的企业应用都是用…

【无问AI网络安全大模型】协助渗透测试挖掘sql注入

在日常工作中发现了一个登录框,话不多说,搞搞看看存不存在SQL注入。输入用户名密码开始抓包,可以看出用户名密码都进行了加密这个时候输入单引号,发现页面报错。 输入双引号,页面恢复正常这个时候,可以判断这个系统存在注入的可能非常大, 手工使用了报错注入、盲注都不行…

20242934 2024-2025-2 《网络攻防实践》第四周作业

1.实践内容 在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。 ARP缓存欺骗攻击:通过伪造ARP消息,欺骗目标设备将攻击者的MAC地址与合法IP地址关联,从而截获或篡改网络数据,造…

ConcurrentHashMap和锁

为什么HashMap数组的长度是2的指数次幂? 因为HashMap的底层是数组+链表+红黑树,在插入元素时,需要通过索引获得插入元素的位置,计算索引的方法是使用哈希函数,将元素的哈希值与数组长度取模,当数组长度是2的指数次幂时,取模操作相当于对元素的哈希值进行二进制位与运算(…

麒麟系统V10系统安全加固

一、安装clamav杀毒软件 1.在clamav官网下载:https://www.clamav.net/downloads 也可以在github上下载早一点的版本:https://github.com/Cisco-Talos/clamav/releases 我这里安装clamav-1.1.2rpm -ivh clamav-1.1.2.linux.x86_64.rpm2.下载病毒库: https://database.clamav.…

孤独摇滚 K-ON wallpapers

双厨狂喜 孤独摇滚K-ON

医疗器械行业IPD流程设计:6个关键问题与解决方案

在当今竞争激烈的医疗器械行业,产品的创新与快速上市能力是企业生存和发展的关键。IPD(集成产品开发)流程作为一种先进的产品开发管理模式,正逐渐成为医疗器械企业提升竞争力的重要手段。然而,在实际应用中,许多企业在 IPD 流程设计方面面临着诸多挑战。本文将深入探讨医…

KUKA库卡KR360_R2830机械臂维修减速机卡住了

库卡机器人维修减速机卡死,作为一种常见的机械故障,其成因往往复杂多样,通常可以归结为长时间的高强度工作、外部异物的侵入、安装过程中的疏忽以及润滑系统的失效等多种因素。以下是对这一故障常见原因的详尽阐述,以及一些实用的维修建议:库卡机器人减速机卡死现象的根源…

【原厂】点阵LED数码管驱动/内置显示RAM为8x16位-LED显示驱动芯片VK1640 SOP28

产品品牌:永嘉微电/VINKA 产品型号:VK1640 封装形式:SOP28 概述 VK1640是一种数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、LED 驱 动等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持8SEGx16GRID的点阵LED显示。 适用于小型LED显示屏驱动。采用SOP28的封装形式…

portainer学习笔记1

Portainer是一款非常好用的docker容器管理平台,部署也很easy。# 创建portainer数据卷 docker volume create portainer_data # 拉取镜像启动portainer docker run -d -p 8000:8000 -p 9443:9443 \ --name portainer --restart=always \ -v /var/run/docker.sock:/var/run/dock…

安装Python保姆级教程(Pycharm破解码+解释器安装)

一、进入Python官网首页,下载最新的Python版本 https://www.python.org/downloads/ 选择最新的Python3.10.5,下载64位的版本 二、下载完成后,进行安装 1.双击Python-3.10.5-amd64.exe 3.出现此页面表示安装成功 三、运行Python 1.Win+R打开控制台,输入Python 此时出现了一…