【问题标题】:Shell script syntax error when trying to activate a virtualenv and execute a python script in it尝试激活 virtualenv 并在其中执行 python 脚本时出现 Shell 脚本语法错误
【发布时间】:2014-05-05 00:49:06
【问题描述】:

我想要一个脚本,它会激活一个虚拟环境(在 shell 和通过 cron 中),然后使用该 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 上运行此脚本。

这张图怎么了?

谢谢!

【问题讨论】:

    标签: python shell cron virtualenv


    【解决方案1】:

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

    python $0 "$@"
    

    python "$@"
    

    【讨论】:

      【解决方案2】:

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

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

      它看起来确实像 Python 错误,而不是 bash 错误。你的错误是当你这样做时:

      python $0 "$@"
      

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

      python "$@"
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多