Emad Nawfal (عماد نوفل) wrote:
Hi Tutors,
#! /usr/bin/env python
print "Hello Tutors"

I have this script saved as hello.py. Why can I execute it, but not the compiled version? or am I doing something wrong? Just curious. Any help appreciated.

There are 2 issues here.

1 - The shell inspects the first line of the file (#! /usr/bin/env python) to find the program to run
     The compiled file does not have this first line.

2 - The python interpreter expects a script not a compiled program.
So even if you got the interpreter to run it would try to treat the file as a script and bomb anyway.

However when you import hello then it looks first for hello.pyc, and runs that. If hello.pyc is missing or older than hello.py it will compile hello.py and then run hello.pyc.
For example :


e...@emad-laptop:~/Desktop/Programming/Haskell$ chmod  +x  hello.py
e...@emad-laptop:~/Desktop/Programming/Haskell$ ./hello.py
Hello Tutors

Now I compile it in Python:
>>> import py_compile
>>> py_compile.compile("hello.py")
>>>
e...@emad-laptop:~/Desktop/Programming/Haskell$ chmod +x hello.pyc

e...@emad-laptop:~/Desktop/Programming/Haskell$ ./hello.pyc
: command not found: �
./hello.pyc: line 2: syntax error near unexpected token `('
./hello.pyc: line 2: `�k...@s    dGHdS(s
Hello TutorsN((((hello.py<module>s'
e...@emad-laptop:~/Desktop/Programming/Haskell$


--
لا أعرف مظلوما تواطأ الناس علي هضمه ولا زهدوا في إنصافه كالحقيقة.....محمد الغزالي
"No victim has ever been more repressed and alienated than the truth"

Emad Soliman Nawfal
Indiana University, Bloomington
--------------------------------------------------------
------------------------------------------------------------------------

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


--
Bob Gailer
Chapel Hill NC 919-636-4239

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to