介绍
Fish shell以其用户友好的性质而闻名,使其成为MacOS,Linux等的理想命令行界面。外壳以其独特的功能脱颖而出,包括自动完成,语法突出显示和选项卡式完成。此外,它的学习曲线足够温和,可以快速掌握。
尽管这些有吸引力的属性,但我遇到的许多开发人员不喜欢Fish shell,这主要是由于与Python的virtualenv等工具的集成差距。因此,在本文中,我为Fish shell的自动virtualenv激活提供了一个简单的解决方案,避免了诸如oh-my-fish之类的资源密集型框架,通常会减慢外壳的速度。
了解Python的Virtualenv
Python的virtualenv是一种创建隔离的Python环境的工具,使其成为管理项目依赖关系和测试Python的新版本而不会影响系统的主要安装的宝贵资源。
> >让Python的依赖项在全球范围内而不是项目特定的文件夹安装,这是令人困惑的,也许并不理想。这个问题需要解决方法,例如virtualenv。
目标
潜入解决方案之前,让我们清楚地定义我们的目标。
任务
当我们导航到项目文件夹或其任何子文件夹时,我们的目标是自动化virtualenv的激活。此外,我们希望在离开项目范围时停用virtualenv。
对virtualenv文件夹的自下而上搜索至关重要,因为多个virtualenvs可以驻留在项目文件夹中,我们需要使用最近的一个。
最终目标是设计一种简约的解决方案,以最大程度地减少性能的障碍并确保与任何鱼环境的最大兼容性。
解决方案:适用的插件
我调整了timothybrown/fish-autovenv的代码,最初由Timothy Brown创建,并在GitHub上发布了修改版。
现有解决方案有一些缺点:
- 它与新版本的鱼类不相容,我的目标是保留简单。
- 为oh-my-fish创建的插件,这是一个资源密集型框架,它减慢了外壳。
- 该插件只能检测当前目录中的虚拟环境,而不是在指定的子目录中。例如,我将虚拟环境存储在.venv子目录中。
- 在包含自定义虚拟环境的目录中打开终端时,插件没有应用虚拟环境。
- 它搜索了自上而下的virtualenvs(
/home
,/home/user
,/home/user/projects
,/home/user/projects/pytest
),而自下而上的方法将更有效且用户友好。
作为鱼类的简约插件经理,我建议fisher。我创建了一个可以通过fisher安装并集成到任何鱼类环境中的插件。如果您不想使用Fisher的任何原因,您只需将paste conf.d/autoenv.fish
文件复制到~/.config/fish/conf.d
目录。
可以在此处找到该项目:aohorodnyk/fish-autovenv。
安装
使用fisher安装aohorodnyk/fish-autovenv:
fisher install aohorodnyk/fish-autovenv
该插件为量身定制的用户体验提供了几个可配置的设置:
-
set -U autovenv_enable yes|no
-启用或禁用插件(默认启用)。 -
set -U autovenv_announce yes|no
-激活或停用virtualenv时启用或禁用公告(默认启用)。 -
set -U autovenv_dir '.venv'
-指定virtualenv所在目录的名称(默认为.venv
)。
结论
不要担心使用Fish shell。这是一种多功能,快速和直观的外壳,使其成为Bash和Zsh的值得替代的。
为开源做出贡献是一种学习,帮助他人并为使每个人都更好,更简单的学习,帮助他人的绝佳方法。