python SyntaxError尝试导入包但仅在远程运行时

时间:2013-07-31 10:13:59

标签: python linux ssh

我有以下脚本:

  1. test.py:

    import sys
    try:
        import random
        print random.random()
    except:
        print sys.exc_info()[0]
    
  2. run.sh:

    python "test.py" >> "test_file" ;
    
  3. 在我的linux服务器上运行以下命令时:

    [saray@compute-0-15 ~]$  nohup ./run.sh  &
    

    test_file包含一个预期的随机数:

    [saray@compute-0-15 ~]$  cat test_file
    0.923051769631 
    

    但是,使用以下命令远程运行相同的命令时

    [saray@blob-cs ~]$ ssh "compute-0-15" 'nohup ./run.sh > /dev/null 2>&1 &'
    

    python无法上传随机包!!

    [saray@compute-0-15 ~]$ cat test_file
    exceptions.SyntaxError
    

    怎么了?

1 个答案:

答案 0 :(得分:1)

您的远程计算机正在运行不同的Python版本,即Python 3。

在Python 3中,print语句已替换为print 函数,并且您的代码抛出了语法错误。

解决方法是使用Python 2远程运行代码,或使代码与Python 2和3兼容:

from __future__ import print_function
import sys

import random
print(random.random())