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