【问题标题】:VirtualEnv initilaized from a bash script从 bash 脚本初始化的 VirtualEnv
【发布时间】:2011-10-19 05:33:50
【问题描述】:

我正在尝试编写一个超级简单的 bash 脚本。基本上激活一个虚拟环境,然后切换到工作目录。我经常做的一项任务并屈从于一个命令才有意义。

基本上...

#!/bin/bash
source /usr/local/turbogears/pps_beta/bin/activate
cd /usr/local/turbogears/pps_beta/src

但是,当它运行时,它只是转储回 shell,而我仍在运行脚本的目录中,并且环境未激活。

【问题讨论】:

    标签: python bash virtualenv


    【解决方案1】:

    我知道我在这里玩游戏迟到了,但我可以建议使用 virtualenvwrapper 吗?它提供了一个不错的 bash 钩子,看起来完全符合您的要求。

    查看本教程:http://blog.fruiapps.com/2012/06/An-introductory-tutorial-to-python-virtualenv-and-virtualenvwrapper

    【讨论】:

      【解决方案2】:

      我想您希望您的脚本是动态的,但是,作为在新系统上工作时的快速修复,我创建了一个别名。

      开始,即

      环境被称为 'py1' 位于 ~/envs/py1/ 有一个存储库 位置在 ~/proj/py1/

      别名 py1='source ~/envs/py1/bin/activate; cd ~/proj/py1/;

      结束即

      您现在可以通过在 CLI 中的任意位置键入 py1 来访问您的项目和 virtualenv。

      我知道这远非理想,违反了 DRY 和许多其他编程概念。这只是一种快速而肮脏的方式,可以快速访问您的环境和项目,而无需设置变量。

      【讨论】:

        【解决方案3】:

        cd 的值是当前脚本的本地值,当您离开文件末尾时结束。

        你想要做的不是“超级简单”,因为你想覆盖这个行为。

        查看exec,将当前进程替换为您选择的进程。

        要将命令输入交互式 Bash,请查看 --rcfile 选项。

        【讨论】:

          【解决方案4】:

          您需要做的就是使用 source 命令运行您的脚本。这是因为 cd 命令对于运行它的 shell 来说是本地的。当您直接运行脚本时,将执行一个新的 shell,当它到达脚本的文件末尾时终止。通过使用 source 命令,您可以告诉 shell 直接执行脚本的指令。

          【讨论】:

          • 顺便说一句,这就是您在自己的脚本中使用“source”的原因。
          • 正是我需要的。一旦计时器结束,就会将其标记为正确。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-15
          相关资源
          最近更新 更多