Run pyc file without specifying python path ?
Barak, Ron
Ron.Barak at lsi.com
Thu Jul 30 02:01:28 EDT 2009
> -----Original Message-----
> From: Dave Angel [mailto:davea at ieee.org]
> Sent: Wednesday, July 29, 2009 21:05
> To: Barak, Ron
> Cc: 'python-list at python.org'
> Subject: Re: Run pyc file without specifying python path ?
>
> Barak, Ron wrote:
> > Hi,
> >
> > I wanted to make a python byte-code file executable,
> expecting to be able to run it without specifying "python" on
> the (Linux bash) command line.
> >
> > So, I wrote the following:
> >
> > [root at VMLinux1 python]# cat test_pyc.py #!/usr/bin/env python
> >
> > print "hello"
> > [root at VMLinux1 python]#
> >
> > and made its pyc file executable:
> >
> > [root at VMLinux1 python]# ls -ls test_pyc.pyc
> > 4 -rwxr-xr-x 1 root root 106 Jul 29 14:22 test_pyc.pyc
> > [root at VMLinux1 python]#
> >
> > So, I see:
> >
> > [root at VMLinux1 python]# file test_pyc.py*
> > test_pyc.py: a python script text executable
> > test_pyc.pyc: python 2.3 byte-compiled
> > [root at VMLinux1 python]#
> >
> > If I try to do the following, no problem:
> >
> > [root at VMLinux1 python]# python test_pyc.pyc hello
> > [root at VMLinux1 python]#
> >
> > However, the following fails:
> >
> > [root at VMLinux1 python]# ./test_pyc.pyc
> > -bash: ./test_pyc.pyc: cannot execute binary file
> > [root at VMLinux1 python]#
> >
> > Is there a way to run a pyc file without specifying the
> python path ?
> >
> > Bye,
> > Ron.
> >
> >
> I don't currently run Unix, but I think I know the problem.
>
> In a text file, the shell examines the first line, and if it
> begins #!
> it's assumed to point to the executable of an interpreter for
> that text file. Presumably the same trick doesn't work for a
> .pyc file.
>
> Why not write a trivial wrapper.py file, don't compile it,
> and let that invoke the main code in the .pyc file?
>
> Then make wrapper.py executable, and you're ready to go.
>
> DaveA
>
>
Hi Dave,
Your solution sort of defeats my intended purpose (sorry for not divulging my 'hidden agenda').
I wanted my application to "hide" the fact that it's a python script, and look as much as possible like it's a compiled program.
The reason I don't just give my user a py file, is that I don't want a cleaver user to change the innards of the script.
On the other hand, I don't want to make a compiled (freezed?) version of the application, because it'll grow the resulting file significantly, and I don't have the experience to know how it will run on different Linuxes.
Bye,
Ron.
More information about the Python-list
mailing list