Python zarif gelecekteki özelliği (____gelecek) ithalat
Nasıl incelikle başarısız gelecekteki özelliği ithalat ne yapmalıyım? Eğer bir kullanıcı çalışıyorsa Python 2.5 kullanarak ve benim modülde ilk ifadesidir:
from __future__ import print_function
Python 2.5 için bu modül derleme başarısız olur:
File "__init__.py", line 1
from __future__ import print_function
SyntaxError: future feature print_function is not defined
Python ^ programını yeniden çalıştırmanız için gereken kullanıcı bilgilendirmek istiyorum . = 2.6 ve belki de bunu yapmak için bazı yönergeler sağlar. Ancak, PEP 236 alıntı için:
Önce görünen tek satır bir future_statement
- Modül kütüphane (varsa).
- Yorum.
- Boş satır.
- Diğer future_statements.
Bir şey gibi yapamam ki:
import __future__
if hasattr(__future__, 'print_function'):
from __future__ import print_function
else:
raise ImportError('Python >= 2.6 is required')
Verir çünkü
File "__init__.py", line 4
from __future__ import print_function
SyntaxError: from __future__ imports must occur at the beginning of the file
KEP bu Pasajı içi ne umut vermek gibi görünüyor:
S: future_statements sarmak istiyorum kullanabilirim yani blok hariç/, deneyin hangi bağlı olarak farklı kod sürüm Python koşuyorum. Neden miyim?
Bir: Üzgünüm! /dışında bir çalışma olduğunu deneyin ; future_statements özelliği vardır öncelikle derleme zamanı hile ve hariç/deneyin uzun süre sonra olur derleyici yapılır. O, tarafından. hariç/çalışmayın zaman, semantik modül için zaten bir etkisi vardır anlaşma yapıldı. Try/except beri başarmak ne olmazgörünüyor başarmak olması gerektiği gibi, sadece. İzin Verilmiyor. Biz de tutmak istiyorum bu özel tablolar için çok kolay tanımak ve bulmak için.
Unutmayınolabiliral __future__ doğrudan ve bilgileri kullanın bu, sys ile birlikte.version_info, gittiğini anlamaya ilgili standları altında çalışan bir özellik durumu göz önüne alındığında.
Fikirler?
CEVAP
"Python ^ programını yeniden çalıştırmanız için gereken kullanıcı bilgilendirmek istiyorum . = 2.6 ve belki de bunu yapmak için bazı yönergeler sağlar."
Bir README dosyası ne değildir?
İşte alternatif. "": Hedef SOP çalıştırmadan önce çevreyi kontrol eden Python küçük bir damla. sarıcı bir
Dosya: appwrapper.py
import sys
major, minor, micro, releaselevel, serial = sys.version_info
if (major,minor) <= (2,5):
# provide advice on getting version 2.6 or higher.
sys.exit(2)
import app
app.main()
Ne "alma" anlamına gelir. direkt __future__
içeriğini inceleyebilirsiniz. Hala bir from __future__ import print_function
derleyici için bir bilgi olmadığı gerçeği ile bağlı değilsin, ama asıl iş yapan modül almadan önce kurcalamak.
import __future__, sys
if hasattr(__future__, 'print_function'):
# Could also check sys.version_info >= __future__. print_function.optional
import app
app.main()
else:
print "instructions for upgrading"
Python @alıcıları ve ayarlayıcıları öz...
En zarif şekilde, string Python boş ol...
Nasıl Python ile göreli ithalat yapmak...
Zarif Python CamelCase camel_case dönü...
Dairesel (veya devirli) Python ithalat...