Re: Stupid question: Making scripts python-scripts
Bill Mill <[EMAIL PROTECTED]> writes: > On 7/21/05, Jan Danielsson <[EMAIL PROTECTED]> wrote: >> Hello all, >> >>How do I make a python script actually a _python_ in unix:ish >> environments? >> >> I know about adding: >> #!/bin/sh >> >>..as the first row in a shell script, but when I installed python on >> a NetBSD system, I didn't get a "python" executable; only a "python2.4" >> executable. >> >>Adding "#!/usr/pkg/bin/python2.4" as the first row in the script >> would probably work, but that would be too specific for the system I'm >> using, imho. >> >>I saw someone using "#!/usr/bin/env python", but that failed on the >> system I'm using, so I assume that's something specific too (or is the >> installation broken?). > > The env program [1], which usually exists at least on a linux system, > executes the program given as its argument. Thus, "/usr/bin/env > python" tries to executes python, which bash will then use to run the > python script. As long as env exists, and python is somewhere in the > PATH, this is a fairly portable way to run python scripts. env doesn't invoke the shell, it uses execvp, which "duplicates the actions of the shell in searching for an executable." Further, he's on NetBSD - he may not have bash installed. My FreeBSD box certainly doesn't. > Does BSD really not come with the env program? I bet there's an > equivalent you could symlink to it. Unfortunately, I've never BSDed, > so I can't help you find it. To get a workable subset of the normal > env functionality, you could try (assuming you use bash): NetBSD comes with an env. His env is failing because he doesn't have a "python" command installed. This appears to be wart(?) in the NetBSD packaging system. To allow multiple versions of FreeBSD to coexist, it doesn't install a "python" command at all, but instead leaves the versioned one around. Two solutions: have your scripts use #!/usr/pkg/bin/python2.4. That way, when you install a new python, they will keep using the old one. That will insure they won't break when you upgrade. However, such breakage is pretty rare in practice. I'd pick a favorite bin directory and symlink from python there to /usr/pkg/bin/python2.4, then use "#!/usr/bin/env python" in your scripts. While I'm on the topic, I think I'll share my favorite cool trick. #!/usr/opt/bin/mypythonscript Doesn't work because Unix won't let you use an interpreted script as the interpreter (is this true for all variants?). However, #!/usr/bin/env mypythonscript works like a charm. http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
Jan Danielsson wrote: > Hello all, > >How do I make a python script actually a _python_ in unix:ish > environments? > > I know about adding: > #!/bin/sh > >..as the first row in a shell script, but when I installed python on > a NetBSD system, I didn't get a "python" executable; only a "python2.4" > executable. > >Adding "#!/usr/pkg/bin/python2.4" as the first row in the script > would probably work, but that would be too specific for the system I'm > using, imho. What about: ln /usr/pkg/bin/python2.4 /usr/bin/python then #!/usr/bin/python in your script, and you should be done (dont forget to chmod +x your script of course) Or I'm I missing something specific to xxxBSD ? >I saw someone using "#!/usr/bin/env python", but that failed on the > system I'm using, How do you execute the python interpreter ? If you need to type "python2.4" (not just "python"), then obviously 'usr/bin/env python' syntax shouldn't work either. My 2 cents -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
Jan Danielsson wrote: > Hello all, > >How do I make a python script actually a _python_ in unix:ish > environments? > > I know about adding: > #!/bin/sh > >..as the first row in a shell script, but when I installed python on > a NetBSD system, I didn't get a "python" executable; only a "python2.4" > executable. > >Adding "#!/usr/pkg/bin/python2.4" as the first row in the script > would probably work, but that would be too specific for the system I'm > using, imho. > >I saw someone using "#!/usr/bin/env python", but that failed on the > system I'm using, so I assume that's something specific too (or is the > installation broken?). You could a) create a symlink to your python executable in a well known location, e.g. ln -s /usr/pkg/bin/python2.4 /usr/bin/python And use either "#!/usr/bin/python" (which should work on most UNIXoid systems with python installed) or "#!/usr/bin/env python" b) use the absolute path /usr/pkg/bin/python2.4 for your script (in order to have it running on your system) and use distutils to create a setup.py script for distribution. IIRC setup.py will recognize the shebang of your scripts and replace it with the proper path to python of the target system during installation. -- Benjamin Niemann Email: pink at odahoda dot de WWW: http://www.odahoda.de/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
You could also set your "python" environment variable on the system... set it to be "/path/to/python2.4". Then use the "#!/usr/bin/env python" trick. Just make sure that env is working for you, first. -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
oops... I missed the "too specific comment." Sorry =) -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
On 7/21/05, Bill Mill <[EMAIL PROTECTED]> wrote: > On 7/21/05, Jan Danielsson <[EMAIL PROTECTED]> wrote: > > Hello all, > > > >How do I make a python script actually a _python_ in unix:ish > > environments? > > > > I know about adding: > > #!/bin/sh > > > >..as the first row in a shell script, but when I installed python on > > a NetBSD system, I didn't get a "python" executable; only a "python2.4" > > executable. > > > >Adding "#!/usr/pkg/bin/python2.4" as the first row in the script > > would probably work, but that would be too specific for the system I'm > > using, imho. > > > >I saw someone using "#!/usr/bin/env python", but that failed on the > > system I'm using, so I assume that's something specific too (or is the > > installation broken?). > > The env program [1], which usually exists at least on a linux system, > executes the program given as its argument. Thus, "/usr/bin/env > python" tries to executes python, which bash will then use to run the > python script. As long as env exists, and python is somewhere in the > PATH, this is a fairly portable way to run python scripts. > > Does BSD really not come with the env program? I bet there's an > equivalent you could symlink to it. Unfortunately, I've never BSDed, > so I can't help you find it. To get a workable subset of the normal > env functionality, you could try (assuming you use bash): > > /home/llimllib $ echo "$@" > /usr/bin/env > /home/llimllib $ chmod a+x /usr/bin/env > ahhh, that should be: /home/llimllib $ echo "\$@" > /usr/bin/env otherwise bash tries to substitute into the string. Sorry bout that. Peace Bill Mill bill.mill at gmail.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
On 7/21/05, Jan Danielsson <[EMAIL PROTECTED]> wrote: > Hello all, > >How do I make a python script actually a _python_ in unix:ish > environments? > > I know about adding: > #!/bin/sh > >..as the first row in a shell script, but when I installed python on > a NetBSD system, I didn't get a "python" executable; only a "python2.4" > executable. > >Adding "#!/usr/pkg/bin/python2.4" as the first row in the script > would probably work, but that would be too specific for the system I'm > using, imho. > >I saw someone using "#!/usr/bin/env python", but that failed on the > system I'm using, so I assume that's something specific too (or is the > installation broken?). The env program [1], which usually exists at least on a linux system, executes the program given as its argument. Thus, "/usr/bin/env python" tries to executes python, which bash will then use to run the python script. As long as env exists, and python is somewhere in the PATH, this is a fairly portable way to run python scripts. Does BSD really not come with the env program? I bet there's an equivalent you could symlink to it. Unfortunately, I've never BSDed, so I can't help you find it. To get a workable subset of the normal env functionality, you could try (assuming you use bash): /home/llimllib $ echo "$@" > /usr/bin/env /home/llimllib $ chmod a+x /usr/bin/env Peace Bill Mill bill.mill at gmail.com [1]: http://rootr.net/man/man/env/1 -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
On your system, do: which python2.4 That will give you the full path to the python2.4 binary (let's call it "path/to/py24"). Then add: #!/path/to/py24 ...to the top of your script. And make sure the file is chmod'd +x -- http://mail.python.org/mailman/listinfo/python-list
Re: Stupid question: Making scripts python-scripts
On Thu, 21 Jul 2005 16:34:30 +0200, Jan Danielsson <[EMAIL PROTECTED]> wrote: >Hello all, > > How do I make a python script actually a _python_ in unix:ish >environments? > > [snip] Put "#!/usr/bin/python". Install the program using distutils: if necessary, distutils will rewrite the #! line to fit the configuration of the system the program is being installed on. Jp -- http://mail.python.org/mailman/listinfo/python-list
Stupid question: Making scripts python-scripts
Hello all, How do I make a python script actually a _python_ in unix:ish environments? I know about adding: #!/bin/sh ..as the first row in a shell script, but when I installed python on a NetBSD system, I didn't get a "python" executable; only a "python2.4" executable. Adding "#!/usr/pkg/bin/python2.4" as the first row in the script would probably work, but that would be too specific for the system I'm using, imho. I saw someone using "#!/usr/bin/env python", but that failed on the system I'm using, so I assume that's something specific too (or is the installation broken?). -- http://mail.python.org/mailman/listinfo/python-list