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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Maven中的java,为什么要运行“mvn clean”?   java会降低图像质量。OutOfMemory异常Android   在Java8中将函数传递到流的过滤方法   jboss6。x java。lang.NoClassDefFoundError,当我将<listenerclass>包含到web时。xml java   java读取图像像素时,像素Alpha始终为255   java在迭代后跳过一行   java如何创建我自己的单链表   意图上的java空指针异常。getStringExtra.:安卓   具有连接实体的java Hibernate onetoone映射   java需要帮助在自制的仓鼠模拟器上实现启动/恢复/暂停/停止线程操作   如何测试非主方法?[Java,IntelliJ]   java jdbc自动提交(false)不起作用   java在JADE中的同一容器中创建多个代理   java OkHttp获取失败的响应正文   java Webdriver flash按钮