能自动进入的python虚拟环境,超轻量级(autoenv, shell, python)

所需软件

  1. autoenv:shell扩展,如果你使用zsh,可以直接以插件形式载入,如果是其他shell,请移步autoenv的github page,安装非常简单。
  2. venv:python的自带模块

方法介绍

我们此处使用的autoenv,可以在我们使用命令行进入某个目录时自动执行该目录下的.env脚本,在退出这个目录时(该目录的子目录不视为退出),执行该目录下的.env.leave脚本。

既然是这样,思路也就非常清晰了,我们要做的就是配置.env.env.leave两个脚本即可。

插一句题外话,由于我们是以脚本的形式进入和退出虚拟环境,而脚本编写是非常灵活的,实际上这样的方案具有极佳的普适性,我们只要根据不同的具体任务编写脚本即可。

编写脚本

先简单说下思路,
首先,使用python自带的venv模块创建虚拟环境
然后在.env脚本中进入虚拟环境,在.env.leave脚本中编写推出虚拟环境的逻辑即可。

.env

脚本已经写好,再次给大家做个参考。

#!/bin/bash

ENV_DIR=wherever/you/like

echo chacking if the virtual environment exist...
if [ -d "$ENV_DIR" ]; then
    echo Virtual environment exist.
else
    echo Virtual environment NOT exist.
    echo Creating virtual environment...
    mkdir $ENV_DIR
    #use python builtin to create vertial environment
    python -m venv $ENV_DIR
fi

echo Launching Virtual Environment...
source $ENV_DIR/bin/activate

figlet env ready -f future

这里使用了figlet输出醒目的大字,如果你不喜欢,换成echo即可 😃
请注意,这只是一个简单的demo,请不要直接放到生产环境中使用,frankly,每当你cd进虚拟环境子目录时,这个脚本都会重新执行一遍🥲,解决方式也非常简单,设置一个shell变量并检查即可。

.env.leave

这个脚本就相当简单了,我们只要调用venv提供的api即可。

#!/bin/bash

#a python api to quit virtual env
deactivate

figlet quit env

其他

关于shell中命令提示符显示错乱问题

由于autoenv已经有命令提示符了,而venv又输出了一个,如果你觉得不美观,可以到虚拟环境的/bin文件夹下找到activate脚本,禁用和VIRTUAL_PS1有关的两个if函数即可。当然也可以在修改环境配置脚本在初始化环节自动配置。

关于nvim某些插件不能正确调用python环境问题

在nvim/vim的配置文件中配置

let g:python3_host_prog = '/usr/bin/python3.12'  " 替换为全局Python 解释器的路径

具体python解释器的版本请根据需要修改。

目前我发现的问题就这些,如果有其他问题,欢迎在评论区交流。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值