#python #venv #shell-completion #virtualenv #env-var #cli

app venv-wrapper

简单的Python虚拟环境管理

8个版本 (3个稳定版)

2.0.2 2021年8月1日
2.0.0 2021年7月18日
0.1.5 2021年1月15日

#1433 in 开发工具

MIT/Apache

59KB
1.5K SLoC

简单的Python虚拟环境管理

venv-wrapper是一个方便的工具,帮助您管理Python虚拟环境。它曾是一个围绕python内置的venv模块的包装器,但现在已经不再是这样,从venv需要的特性已经在Rust中重新实现了。

安装

Cargo和crates.io

  1. 安装rust (https://rust-lang.net.cn/tools/install)。
  2. cargo的二进制路径添加到您的PATH环境变量。
    • 通常二进制路径是~/.cargo/bin
  3. 运行cargo install venv-wrapper

Arch Linux

您可以从AUR安装venv-wrapper。

$ paru -S venv-wrapper-bin

Homebrew

$ brew install marier-nico/packages/venv-wrapper

PPA

即将推出!

入门指南

  1. 安装后,请确保您可以使用venv-wrapper命令(它应该在您的shell的$PATH中)。
  2. 然后,您需要设置您的shell以使用venv-wrapper。为此,编辑您的shell启动配置文件(~/.bashrc~/.zshrc~/.config/fish/config.fish)并在其中添加以下内容:

Bash

eval "$(venv-wrapper init bash)"
venv completions # Optional, if you want shell completions

ZSH

eval "$(venv-wrapper init zsh)"
venv completions # Optional, if you want shell completions

Fish

venv-wrapper init fish | source
venv completions # Optional, if you want shell completions

配置

您可以使用配置文件、环境变量或CLI标志来配置venv-wrapper。

可用的配置值

  • venv_root:存储所有虚拟环境的目录(默认为~/.virtualenvs)。

配置文件

配置内容

该配置文件是一个简单的ini文件,不包含任何部分,如下所示:

venv_root = /home/me/.non-default-location

注意:配置中的路径必须是绝对路径,否则您可能会不小心将虚拟环境放置在您不打算放置的地方。

配置位置

配置文件的存储位置取决于您选择的平台。有关具体实现细节,请参阅 directories 包。

  • Linux

    遵循 XDG 用户目录 规范。默认情况下,配置文件应位于 ~/.config/venv-wrapper/config.ini

  • macOS

    使用 标准目录。默认情况下,配置文件应在 ~/Library/Application support/venv-wrapper/config.ini

环境变量

请注意,此处路径不需要是绝对路径,因为您的shell将执行路径展开。如果您的shell不展开路径,则您需要路径是绝对路径。

VENVWRAPPER_VENV_ROOT=~/.a-different-venvs-directory venv ls

CLI 标志

与环境变量相同,这里不需要绝对路径,除非您的shell不展开路径。

  • venv-r~/.a-不同-venvs-目录 venv ls

Shell 兼容性

以下shell完全受支持,并且应该都能正常工作

  • Bash
  • ZSH
  • Fish

然而,除了shell补全之外的所有功能都应在大多数类似bash的shell中正常工作。

Shell 补全

默认情况下,shell补全未激活,但启用它们非常简单。您只需运行

$ venv completions

注意:在激活补全之前,您必须在shell中初始化venv-wrapper。

贡献

入门指南

主要应该安装 pre-commit 并运行 pre-commit install 来确保您的提交符合要求!此外,您的提交应遵循 常规提交。为此,您可以使用诸如 commitizen 这样的工具,它将帮助确保所有提交看起来都很好。

提交约定最近才添加,因此大多数提交尚未符合要求!

缺少的功能

在其当前状态下,此项目并不完全符合 virtualenvwrapper 的功能。缺少的功能如下

  • 复制虚拟环境
  • 可自定义的钩子
  • 创建可共享扩展的插件系统

发布版本

要发布新版本,需要遵循一些简单的步骤。

  1. 在仓库根目录中创建或编辑 RELEASE_CHANGELOG.md 文件(包含发布版本的历史记录)。
    • 这将成为GitHub发布的内容
  2. 更新 cargo.tomlsrc/cli/get_app.rs 中的版本。
  3. 将所有要发布的代码合并到 main
  4. main 分支的头部创建一个新标签。
    • gittag -svX.Y.Z -m "发布 vX.Y.Z"
  5. 推送新标签。
    • gitpush --tags
  6. 发布创建后,请更新此处 的homebrew公式

依赖项

~6–15MB
~159K SLoC