2010-06-14 9 views
5

Python 3.x'ten yeni baskıyı kullanıyorum ve end=' ' nedeniyle derlemini derlemediğini gözlemledim.Eski Python ile incelikle başarısız olan bir Python 2.6+ betiği nasıl yazılır?

from __future__ import print_function 

import sys 
if sys.hexversion < 0x02060000: 
    raise Exception("py too old") 

... 
print("x",end=" ") # fails to compile with py24 

Yeni sözdizimini kullanmaya devam edebilirim ancak betiğin düzgün bir şekilde başarısız olmasını nasıl sağlayabilirim? Başka bir senaryoyu çağırmak ve sadece güvenli sözdizimini kullanmak zorunlu mudur?

+2

Bir erkeği zamanında geri gönderebilirsek, Guido'nun güzel bir pragma ekleyeceğine ikna edebiliriz "__minimum_python_version __ (2,0)" –

cevap

2

Bu question here numaralı belgede bazı öneriler vardır, ancak kolayca mümkün olmadığı anlaşılıyor. Bir sarmalayıcı komut dosyası oluşturmanız gerekecek.

2

bir yolu 2to3 komut dosyası kullanıyorsanız, piton 3 içine port o istediğinizde sonra, piton 2.x baskı deyimini kullanarak modül yazmaktır. Ben de 2to3 daha az olgun gibi görünse de, 3to2 dönüşüm için scriptler olduğunu düşünüyorum.

Her iki yöntemde de, bigger komut dosyalarında, her zaman etki alanı mantığını ve giriş/çıkışını ayırmalısınız; bu şekilde, tüm baskı deyimleri/işlevleri tek bir dosyada bir araya getirilir. Kayıt için, kayıt modülünü kullanmalısınız. Dosyanın başında

b'You need Python 2.6 or later.' 

:

+2

Tüm fikir, Python 3'ün hazır kodunun 2.6'dan fazla python ile çalışmamasıdır. gelecekte anahtarı yapmayı planlıyorsunuz. – sorin

8

Python 2.6 için kolay bir yöntem gibi bir satır eklemektir. Bu, bayt editörlerinin 2.6 sürümünde tanıtıldığı ve böylece önceki sürümlerin yığın izlemesi olarak yazdığınız mesajla birlikte bir SyntaxError yükselteceği gerçeğinden yararlanır.

İlgili konular