尝试激活virtualenv并在其中执行python脚本时,Shell脚本语法错误

时间:2014-03-26 14:26:42

标签: python shell cron virtualenv

我想要一个激活虚拟环境的脚本(在shell和cron中),然后运行带有所有参数IN的virtualenv传递的脚本。

这就是我现在对prod.sh所拥有的:

#!/bin/bash

. $VE_DIR/Production_VE/bin/activate

python $0 "$@"

然后我试试这个:

hostname:~$prod.sh myscript.py -c arg1 -fu

我收到此错误:

  File "/home/username/prod.sh", line 3
    . $VE_DIR/Production_VE/bin/activate
    ^
SyntaxError: invalid syntax

我尝试切换到源:

#!/bin/bash

source $VE_DIR/Production_VE/bin/activate

python $0 "$@"

错误改变了,但现在:

  File "/home/username/prod.sh", line 3
    source $VE_DIR/Production_VE/bin/activate
           ^
SyntaxError: invalid syntax

对于其他上下文,我希望能够在CentOS 6.5 VPS和Mac OS上运行此脚本。

这张照片出了什么问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

在你的bash脚本中,$ 0是“prod.sh”,它不是python脚本。变化

python $0 "$@"

python "$@"

答案 1 :(得分:0)

我刚创建了一个类似于你的脚本,运行良好。我觉得这很奇怪,你添加一个问题。但是,当我看到你的错误时:

  File "/home/username/prod.sh", line 3
    source $VE_DIR/Production_VE/bin/activate
           ^
SyntaxError: invalid syntax

它看起来像Python错误而不是bash错误。你犯的错误是:

python $0 "$@"

您应该删除$ 0,因为它包含bash脚本的路径。

python "$@"