0

次のスクリプトがあります。

  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" ;
    

私の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

どうしたの?

4

1 に答える 1

1

リモート マシンは、別の Python バージョンである Python 3 を実行しています。

Python 3 では、ステートメントはfunctionprintに置き換えられ、コードは構文エラーをスローしています。print

回避策は、コードを Python 2 でもリモートで実行するか、コードを Python 2 と 3 の両方と互換性を持たせることです。

from __future__ import print_function
import sys

import random
print(random.random())
于 2013-07-31T10:16:02.900 に答える