用于在中央位置创建venvs的简单工具
项目描述
mkenv 是一个工具,用于在单个文件中配置一组虚拟环境,每个环境要安装的包,以及任何全局可用的二进制文件。
安装
常规方法
$ pip install mkenv
用法
使用mkenv的最佳方式是创建一个名为 ~/.local/share/virtualenvs/virtualenvs.toml 的文件。以下是一个示例:
[virtualenv.development]
install = [
"pudb",
"twisted",
]
link = ["trial"]
[virtualenv.app]
install = ["$DEVELOPMENT/myapp"]
创建上述内容后,运行 convergeenvs 将创建2个虚拟环境,一个名为“development”,其中安装了pudb和twisted,并从内部链接到您的 PATH,另一个名为“app”安装相应的目录。
这就是您需要了解的所有内容。如果您坚持要继续阅读,mkenv有一个较旧且不推荐的可变接口,允许您在不跟踪配置文件(或合并它们)的情况下在中央位置创建虚拟环境。为此,用法类似于 mkvirtualenv,尽管 mkenv 直接将参数传递给 virtualenv
$ mkenv nameofvenv -- -p pypy
将在适当的平台特定数据目录中创建虚拟环境,或者在工作区 WORKON_HOME 中指定的目录中创建,以兼容 virtualenvwrapper。
单用途虚拟环境
虚拟环境的一个常见用途是用于单用途安装,例如
“我想安装fabric,并给它自己的虚拟环境,以便可以独立升级其依赖项,同时仍然能够全局使用 fab 二进制文件”。
mkenv 支持为这种情况提供 --link 选项。
$ mkenv -i fabric --link fab
将为 fabric 创建一个虚拟环境(在同一常规位置),但会将虚拟环境中的 fab 二进制文件软链接到您的 ~/.local/bin 目录。
(您可能听说过 pipsi,这是一个类似工具,但自定义程度不如我所希望的。)
临时虚拟环境
我还发现 mktmpenv 对于快速测试很有用。为了支持其使用场景,mkenv 目前支持一种不同但类似的临时虚拟环境风格。
调用
$ venv=$(mkenv -t)
在您的 shell 中将创建(或重新创建)一个全局临时虚拟环境,并打印其 bin/ 子目录(在这种情况下,它将被存储在 venv 变量中)。它随后可以被用于,例如
$ $venv/python
或
$ $venv/pip ...
等等。
如果您喜欢这种类型的工作流程,您可能会更喜欢使用
$ cd $(mkenv -t)
作为您的临时 venv 工作流程。
全局虚拟环境会在每次调用 mkenv -t 时清除。除非您关心这一点,否则与 virtualenvwrapper 的 mktmpenv 不同,无需担心清理它,每次需要时,它将被清除并覆盖。
mkenv 可能会在未来支持更相似的“传统”一次性使用虚拟环境,但鉴于它默认不激活虚拟环境(见下文),对于此使用场景,当前建议直接使用 virtualenv 二进制文件。
五分钟教程
除了上述用于创建命名虚拟环境的 mkenv 和用于创建临时虚拟环境的 mkenv -t
$ findenv name foo
将输出(到标准输出)具有给定名称的虚拟环境的路径(另见 --existing-only),并且
$ rmenv foo
将其删除。
还有一些其他细微的变体,请参阅三个二进制文件中的每个的 --help 信息。
真正的文档即将到来(我希望)
为什么不使用 virtualenvwrapper?
virtualenvwrapper 很棒!我已经使用了几年。但我逐渐确定了我喜欢使用的该功能的一个更小的子集。具体来说
我不喜欢激活虚拟环境。
虚拟环境本身已经很神奇和黑客式了,再在上面堆叠激活只会让我觉得事情更乱,尤其是在 shell 中在不同项目之间移动时。有些人使用 cd 小技巧来解决这个问题,但我只想保持简单。
我不需要项目支持。
我从未将项目附加到虚拟环境中。我只是使用命名约定,用存储库的名称命名虚拟环境(进行简单转换),然后使用 shell 中的动态目录扩展 来处理关联。
基本上,我只是想要一个为我管理虚拟环境中央存储库的东西。所以这就是 mkenv 做的事情。
项目详情
下载文件
下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解有关安装包的更多信息。