2012-05-10 23 views
5

Python komut dosyalarım IDLE'den düzgün çalışıyor ancak komut satırından çalıştırmaya çalıştığımda işler ters gidiyor. Öncelikle pygame'i ithal ederken sorun yaşadım, fakat PYTHONPATH ortam değişkenine C: \ Python27 \ Lib \ site-packages ekledim ve her şey iyi oldu. Ancak, şimdi komut satırından bir şey çalıştırmayı denediğimde, şunu elde ederim:Python, komut satırı aracılığıyla içe aktarımı gerçekleştiremiyor

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 

Herhangi bir fikir var mı?

Bu yerel bir sorun değil;

Pong.py şöyle başlar ...

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 

ve bu sözdizimi kesinlikle sorun yok: komut satırından başka komut dosyası çalıştırmayı denediğinizde, bu alın

#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() 
+0

Komut dosyasının tam olarak IDE'den çalıştığınız ile aynı olduğundan emin misiniz? Stactkrace'den yanlış satırda if ifadesi varmış gibi görünüyor. –

+0

Tam olarak aynı komut dosyası, if ifadesi dosyamda bile yok! C: \ Python27 \ Lib \ ntpath.py. Bu sözdizim bana da garip geldi ... – ian93

+0

Neden 'os.path' yerine' ntpath' kullanıyorsun? – japreiss

cevap

10

Bu bana senin bilgisayarında iki farklı Python versiyonu varmış gibi geliyor. Biri, Python'un üçlü ifadesinin sürümünü kabul eden daha yeni bir sürüm ve daha eski bir sürüm. IDLE kullandığınızda, daha yeni sürüm çağrılır. Komut satırını kullandığınızda, eski sürüm denir. Komut satırından python -V çalıştırarak bu hipotezi onaylayabilir veya onaylayabilirsiniz. Ayrıntılı bilgi için, koşullu ifadeler için destek Python 2.5'a eklenmiştir. Böylece, PYTHONPATH'u değiştirdiğinizde, daha eski bir python sürümü (2,4, testinize göre) ile daha yeni bir python dosyası çalıştırıyorsunuz (2.7'den geliyor).

+1

Sadece bu konuda yorum yaptı ... Şimdi aşağı izlemek zorundayım eski sürüm ... – ian93

+0

Evet, onu buldum ... suçlu ayrı bir Python24 exe çalıştıran ve onun dizini Python27 binimden önceki PATH'a ekleyen Lilypond'du. Bu yüzden onu çıkardım ve her şey yolunda. Yardımınız için teşekkürler! – ian93

0

Komut satırı python'unuzun en az sürüm 2.5 olduğundan emin olun, çünkü o zamandan önce üçlü operatör yoktur (http://marc-abramowitz.com/archives/2008/05/18/python-ternary-operator /).

+0

Evet, sorun buydu, kinda. – ian93

İlgili konular