Python 为什么可以';t upstart run';源箱/激活';?

Python 为什么可以';t upstart run';源箱/激活';?,python,virtualenv,upstart,Python,Virtualenv,Upstart,由于某种原因,upstart不会激活我的virtualenv 这就是我运行它的方式 script # My startup script, plain old shell scripting here. cd path/to/env source bin/activate .... end script 当手动启动时,virtualenv运行正常 为什么不起作用?所以我已经解决了这个问题,出于某种原因,upstart不喜欢使用“source”,所以我将行改为:

由于某种原因,upstart不会激活我的virtualenv

这就是我运行它的方式

script
    # My startup script, plain old shell scripting here.
    cd path/to/env
    source bin/activate
    ....
end script
当手动启动时,virtualenv运行正常


为什么不起作用?

所以我已经解决了这个问题,出于某种原因,upstart不喜欢使用“source”,所以我将行改为:

source bin/activate


这是可行的,但我不知道为什么,所以如果有人能解释一下这是一个bash内置命令,但只是一个posix“特殊”命令,我会很感兴趣的

Upstart在执行脚本部分时运行
sh-e


sh shell不理解
源代码
,只有

是否可能
upstart
在连续命令之间不保留环境?您始终可以使用
$VIRTUAL\u ENV/bin/python…
直接运行您的应用程序,而无需激活环境。@millimoose其中$VIRTUAL\u ENV是指向virtualenv的路径?确切地说,
activate
应该设置相同的变量,因此我使用它来计算名称会很熟悉。这似乎不起作用。您是否收到任何错误消息?毫无疑问,我已经在Ubuntu 12.04上确认了这一点。谢谢你这让我快发疯了。如果可以的话,我会给你5票。非常感谢。我对这个问题的单独回答说明了这一点。我尝试了两种方法,但两种方法都不起作用。(Ubuntu14.04.1服务器。)(另外,没有试图寻找bin/activate源,只是试图寻找用户的.bashrc源以获取env vars,甚至使用完整路径…)我在gunicorn和upstart中遇到了这个问题。我发现我所需要做的就是将gunicorn可执行文件的路径更改为环境的
bin/
文件夹中的路径。
. bin/activate