Re: Stupid question: Making scripts python-scripts

2005-07-22 Thread bruno modulix
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

2005-07-22 Thread Mike Meyer
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.

  mike
-- 
Mike Meyer [EMAIL PROTECTED]  http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
-- 
http://mail.python.org/mailman/listinfo/python-list


Stupid question: Making scripts python-scripts

2005-07-21 Thread Jan Danielsson
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


Re: Stupid question: Making scripts python-scripts

2005-07-21 Thread Jp Calderone
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


Re: Stupid question: Making scripts python-scripts

2005-07-21 Thread callmebill
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

2005-07-21 Thread Bill Mill
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

2005-07-21 Thread Bill Mill
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

2005-07-21 Thread callmebill
oops... I missed the too specific comment.  Sorry =)

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Stupid question: Making scripts python-scripts

2005-07-21 Thread callmebill
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