2011-06-22 21 views
5

BenTornado 'Merhaba Dünya' Hata

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web 

from tornado.options import define, options 

define("port", default=8888, help="run on the given port", type=int) 


class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     self.write("Hello, world") 


def main(): 
    tornado.options.parse_command_line() 
    application = tornado.web.Application([ 
     (r"/", MainHandler), 
    ]) 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(options.port) 
    tornado.ioloop.IOLoop.instance().start() 


if __name__ == "__main__": 
    main() 

Komut Satırı aşağıdaki MerhabaDünya Script çalıştırmak için çalışıyorum ve aşağıdaki hatayı Python için

File "helloworld.py", line 17, in ? 
    import tornado.httpserver 
    File "/home/username/public_html/tornado-1.2.1/tornado/httpserver.py", line 28, in ? 
    from tornado import ioloop 
    File "/home/username/public_html/tornado-1.2.1/tornado/ioloop.py", line 184 
    action if action is not None else signal.SIG_DFL) 
      ^
SyntaxError: invalid syntax 

Yepyeni alıyorum, birisi açıklayabilir sorun ne işaret ediliyor? Not; helloworld.py /home/username/public_html/tornado-1.2.1/ dizinindedir ve aynı dizinde tornado alt dizini vardır.

Düzenleme: i çalıştırıyorum komut

Maalesef Tornado değil Python 2.4.3

python helloworld.py 

python -V sonucudur

olduğunu (şimdi bu düzenlemeyi göz ardı) 2.5 öncesi sürümleri ile çalışmak bu yüzden sorun olabilir. Ancak, Python'u yükledim 2.6.6 Python'un doğru sürümünde çalışıp, eskisinin değil, nasıl çalıştığını nasıl temin ederim? II

DÜZENLEME Şimdi 2.6.6

için Python ayarlayabilir ve herhangi bir çıktı üretmez

python helloworld.py 

çalışıyor olması. Program sadece komut satırında donuyor.

Burada herhangi bir düşünce var mı?

+1

Hangi python sürümünü kullanıyorsunuz? – Schildmeijer

+2

Hangi sürüm python'u çalıştırıyorsunuz ve python'un hangi sürümünde kasırga gerektiriyor? –

+1

Kodunuz Python 2.7 üzerinde çalışıyor. Daha yüksek versiyonların Tornado’yu çalıştırmak için başka bağımlılıkları var. – Ravi

cevap

2

Kendinizi öğrendiğiniz gibi, sorun, python 2.4'ün koşullu ifade işlecini desteklememesidir.

Başka bir Python sürümüne geçiş yapmak sisteminize göre değişir. Debian ve Ubuntu'da /usr/share/python/debian_defaults'u düzenleyebilirsiniz.Tüm Linux sisteminde, sen sürüme/usr/bin/python ve bağlantıyı kaldırabilir istediğiniz:

sudo mv /usr/bin/python /usr/bin/python.dist 
sudo ln -s /usr/bin/python2.5 /usr/bin/python 

Alternatif olarak, istenilen python ikili önce bir dizin içermesi PATH ortam değişkeni değiştirebilir /usr/bin (muhtemelen Windows'a gitmenin yolu budur). Bunu ~/.profile (her girişte) veya ~/.bashrc (etkileşimli, bash kabuklarında) düzenleyerek kalıcı hale getirebilirsiniz.

+0

Python'un 2.6.6 olduğundan emin olmak için Yolu değiştirdim. Şimdi programı çalıştırıyorum ve hiçbir şey olmuyor! ... Lütfen ayrıntılar için soruya bakın. – algorithmicCoder

+0

@algorithmicCoder İsteğinize 'python' girdiğinizde hiçbir şey olmaz mı? Eğer öyleyse, lütfen ls -l $ (hangi python) 'çıktısı gönderin. Ayrıca, strace python’unun (isteğe bağlı olarak programınız) çıktısı paha biçilmez bir yardım olacaktır. Ayrıca, lütfen değiştirilmiş yolu ("echo" $ PATH "çıktısını gönderin." 0. – phihag

+0

"python" yazarak "python" komut satırı istemine yönlendiririm. Beklendiği gibi davranır. Export PATH = $ HOME/py26/bin: $ PATH. strace yollamak için çok uzun görünüyor ... Ne aramalıyım? – algorithmicCoder

1

Python 2.6'yı varsayılan olarak almak için .bash_rc ürününüze python ile /usr/bin/python2.6 arasında eşlemiş olduğunuzdan emin olun. Bunu düzeltmek için çalışıyorsanız

, sen geçmesi gerekir ve koşullu operatörü takas edeceğiz.

if seconds is not None: 
     signal.signal(signal.SIGALRM, 
         action if action is not None else signal.SIG_DFL) 

Bu sözdizimi (action if action is not None else signal.SIG_DFL) Python 2'de yalnızca> = 5

Alt? kadar güzel ama uygulanabilir değil:

if seconds is not None: 
     if action is not None: 
      tmpaction = action 
     else 
      tmpaction = signal.SIG_DFL 
     signal.signal(signal.SIGALRM,tmpaction) 

ÇOK SİZE SADECE PYTHON son sürümünü yükseltmenizi öneririz. DİĞER HUSUSLAR BULMADIĞINIZ GARANTİ YOKTUR. (Tabii ki, öğrenme deneyimini istemiyorsan).

+0

Python'un 2.6.6 olduğundan emin olmak için Yolu değiştirdim. Şimdi programı çalıştırıyorum ve hiçbir şey olmuyor! ... Lütfen ayrıntılar için soruya bakın. – algorithmicCoder

İlgili konular