bash帮助程序,用于导航和管理python virtualenvs。
envie的Python项目详细描述
动机
我喜欢让我的虚拟环境接近源代码(特别是在生产环境中)。 在磁盘上有数百个项目的情况下,这使我能够缩短环境目录名 与项目相关(因为一个项目可以有几个环境,例如dev、prod、test)。 此外,环境很容易定位、更新或重建(通常维护)。
如果您以图1所示的任何方式构造文件/项目。在下面,你会 发现envie特别有用。
work work /srv │ │ │ ├── plucky ├── jsonplus ├── production │ ├── env <-- │ ├── .git │ ├── website │ ├── plucky │ ├── django │ │ ├── pythonenv <-- │ ├── tests │ │ ├── env │ │ ├── var │ └── ... │ │ │ ├── dev <-- │ │ └── src │ │ │ │ └── prod <-- : : ├── .git ├── blog │ │ ├── tests : : └── ... │ ├── .env <-- │ │ │ ├── env <-- . . : ├── .git : : : ├── test_1.py : ├── _posts : : : └── ... . └── ... . . . (a) env in level with src (b) env nested under src (c) env one level above src Figure 1. Several ways to keep your environments local to the code.
轻松激活
要激活附近最近的虚拟环境,只需键入envie(图1.a和1.c):
~/work/plucky$ envie Activated virtual environment at 'env'. /srv/production/website/src$ envie Activated virtual environment at '../pythonenv'.
如果发现几个同样接近的环境(图1.b),系统将提示您选择 确切的环境。但是,您可以巧妙地使用模糊过滤来避免这种情况,例如:
~/work/jsonplus$ envie dev
Activated virtual environment at 'django/env/dev'.
发现和筛选对深度没有限制,因此您可以激活项目环境,如:
~$ envie plus dev
Activated virtual environment at 'work/jsonplus/django/env/dev'.
隐性激活
有时,您并不关心激活shell中的相关环境。 你只想让你的脚本在正确的环境中运行。简易豌豆(参考图1.b):
~/work/jsonplus$ envie ./django/tests/test_1.py Activated virtual environment at 'django/tests/env'. # running test ...
它不一定是python脚本:
~/work/plucky$ envie run make test Activated virtual environment at 'env'. # running 'make' with python from env
它也可以从散列爆炸中工作:
#!/usr/bin/env envie
甚至可以从python程序中激活事后最接近的环境 (将环境从当前的环境更改为与脚本最接近的环境):
#!/usr/bin/pythonimportenvie.activate_closest
简洁的PIP注入式创建
当然,您可以使用virtualenv --python=python3 env,但这不是更简单吗?
$ envie create -3
# or, shorter:
$ mkenv3
同时一次性安装您的pip需求如何?
work work /srv │ │ │ ├── plucky ├── jsonplus ├── production │ ├── env <-- │ ├── .git │ ├── website │ ├── plucky │ ├── django │ │ ├── pythonenv <-- │ ├── tests │ │ ├── env │ │ ├── var │ └── ... │ │ │ ├── dev <-- │ │ └── src │ │ │ │ └── prod <-- : : ├── .git ├── blog │ │ ├── tests : : └── ... │ ├── .env <-- │ │ │ ├── env <-- . . : ├── .git : : : ├── test_1.py : ├── _posts : : : └── ... . └── ... . . . (a) env in level with src (b) env nested under src (c) env one level above src Figure 1. Several ways to keep your environments local to the code.0
或者,在安装了一些 包的情况下创建一个 临时/丢弃的 环境,然后 在交互式python会话中进行黑客攻击,并在退出时最终破坏整个环境:
work work /srv │ │ │ ├── plucky ├── jsonplus ├── production │ ├── env <-- │ ├── .git │ ├── website │ ├── plucky │ ├── django │ │ ├── pythonenv <-- │ ├── tests │ │ ├── env │ │ ├── var │ └── ... │ │ │ ├── dev <-- │ │ └── src │ │ │ │ └── prod <-- : : ├── .git ├── blog │ │ ├── tests : : └── ... │ ├── .env <-- │ │ │ ├── env <-- . . : ├── .git : : : ├── test_1.py : ├── _posts : : : └── ... . └── ... . . . (a) env in level with src (b) env nested under src (c) env one level above src Figure 1. Several ways to keep your environments local to the code.1
有关详细信息和更多示例,请参见envie create、envie remove和envie remove。/commands.html"envie tmp" rel="nofollow">envie tmp文档。
现有环境发现
最接近环境的激活取决于对现有虚拟环境的发现 具有 lsenv 的特定目录下的环境(envie列表中的 envie列表 使用 findenv 搜索( envie find ):
work work /srv │ │ │ ├── plucky ├── jsonplus ├── production │ ├── env <-- │ ├── .git │ ├── website │ ├── plucky │ ├── django │ │ ├── pythonenv <-- │ ├── tests │ │ ├── env │ │ ├── var │ └── ... │ │ │ ├── dev <-- │ │ └── src │ │ │ │ └── prod <-- : : ├── .git ├── blog │ │ ├── tests : : └── ... │ ├── .env <-- │ │ │ ├── env <-- . . : ├── .git : : : ├── test_1.py : ├── _posts : : : └── ... . └── ... . . . (a) env in level with src (b) env nested under src (c) env one level above src Figure 1. Several ways to keep your environments local to the code.2