我的Python脚本从IDLE运行良好,但是当我尝试从命令行运行它们时,事情就出错了。 首先,我在导入pygame时遇到了麻烦,但是我将C:\ Python27 \ Lib \ site-packages添加到了PYTHONPATH环境variables中,并且一切正常。 但是,现在当我尝试从命令行运行某些东西时,我得到了以下结果:
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
那句法绝对没错
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()
这听起来像你在你的计算机上有两个不同版本的Python。 一个是接受Python三元表达式版本的更新版本,另一个版本是旧版本。 当您使用IDLE时,将调用较新的版本。 当您使用命令行时,会调用旧版本。 您可以通过从命令行运行python -V来确认或反驳这个假设。
详细说明,在Python 2.5中添加了对条件表达式的支持。 所以当你修改PYTHONPATH ,你会用一个较旧版本的Python(2.4,根据你的测试)运行一个新的Python文件(从2.7开始,听起来像)。
确保你的命令行python至少是版本2.5,因为在那之前,没有三元运算符(http://marc-abramowitz.com/archives/2008/05/18/python-ternary-operator/)。