5

私のPythonスクリプトはIDLEから正常に実行されますが、コマンドラインから実行しようとすると問題が発生します。最初はpygameのインポートに問題がありましたが、C:\ Python27 \ Lib \ site-packagesをPYTHONPATH環境変数に追加し、すべてが順調だったと思いました。ただし、コマンドラインから何かを実行しようとすると、次のようになります。

C:\Users\Ian Sinke\Documents\Pong>python pong.py
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "pong.py", line 3, in ?
    import pygame
  File "C:\Python27\Lib\site-packages\pygame\__init__.py", line 27, in ?
    import sys, os, string
  File "C:\Python27\Lib\os.py", line 63, in ?
    import ntpath as path
  File "C:\Python27\Lib\ntpath.py", line 401
    backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.')

                                    ^
SyntaxError: invalid syntax

何か案は?

これはローカライズの問題ではありません。コマンドラインから別のスクリプトを実行しようとすると、次のようになります。

C:\Users\Ian Sinke\Documents>python app.py
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "app.py", line 4, in ?
    import urllib2
  File "C:\Python27\Lib\urllib2.py", line 92, in ?
    import base64
  File "C:\Python27\Lib\base64.py", line 346
    with open(args[0], 'rb') as f:
            ^
SyntaxError: invalid syntax

そしてその構文は間違いなくOKです...

Pong.pyは次のように始まります。

#import sys
import math
import pygame
import time
from pygame.locals import *

# Helper functions
def centerdist(paddletop, balltop):
    return balltop - paddletop - 30

# Constants
BLACK = 0, 0, 0

pygame.init()
4

2 に答える 2

10

これは、コンピューターに2つの異なるバージョンのPythonがあるように思えます。1つはPythonのバージョンの三元式を受け入れる最新バージョンで、もう1つは古いバージョンです。IDLEを使用すると、新しいバージョンが呼び出されます。コマンドラインを使用すると、古いバージョンが呼び出されます。python -Vコマンドラインから実行することで、この仮説を確認または反証できます。

詳細を説明するために、 Python2.5で条件式のサポートが追加されました。したがって、変更PYTHONPATHすると、古いバージョンのpython(2.4、テストによると)で新しいpythonファイル(2.7からのように聞こえます)を実行することになります。

于 2012-05-10T19:16:19.287 に答える
0

それまでは三項演算子(http://marc-abramowitz.com/archives/2008/05/18/python-ternary-operator/)がなかったため、コマンドラインpythonが少なくともバージョン2.5であることを確認してください。

于 2012-05-10T19:23:15.373 に答える