将Python的Virtualenv与鱼壳集成在一起,而没有过度复杂的框架
#编程 #python #virtualenv #fish

介绍

Fish shell以其用户友好的性质而闻名,使其成为MacOS,Linux等的理想命令行界面。外壳以其独特的功能脱颖而出,包括自动完成,语法突出显示和选项卡式完成。此外,它的学习曲线足够温和,可以快速掌握。

尽管这些有吸引力的属性,但我遇到的许多开发人员不喜欢Fish shell,这主要是由于与Pythonvirtualenv等工具的集成差距。因此,在本文中,我为Fish shell的自动virtualenv激活提供了一个简单的解决方案,避免了诸如oh-my-fish之类的资源密集型框架,通常会减慢外壳的速度。

了解Python的Virtualenv

Pythonvirtualenv是一种创建隔离的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的值得替代的。

为开源做出贡献是一种学习,帮助他人并为使每个人都更好,更简单的学习,帮助他人的绝佳方法。