Run python script with ./

2013-04-05 Thread LubanWorks
Hi all,
I installed two python 2.7.3 into my home directory

   one is for Linux:   /home/luban/*Linux*/Python/2.7.3
   another is for Solaris:   /home/luban/*SunOS*/Python/2.7.3

then I create a wrapper named "python" in /home/luban/bin to call the
different python when I am working on different systems.

[luban@lunbanworks 1] ~ > cat /home/luban/bin/python

#!/bin/sh

CMD=`basename $0`

OS=`uname -s`


CMD_PATH="/home/luban/$OS/Python/2.7.3/bin"


if [ -x "${CMD_PATH}/${CMD}" ];then

export PATH="${CMD_PATH}:${PATH}"

exec ${CMD_PATH}/${CMD} ${1+"$@"}

else

echo "${CMD} is not available for ${OS}" 1>&2

exit 1

fi

[luban@lunbanworks 2] ls -l /home/luban/bin/python
-rwxrwxr-x  1 luban lunban  221 Apr  5 19:11 python*


I use below script to  test the wrapper /home/luban/bin/python

[luban@lunbanworks 3]* ~ > *cat myscript.py
#!/home/luban/bin/python

myname="lunban"

print "myname is %s" % myname

[luban@lunbanworks 4]* *chmod +x myscript.py

I want to use ./ run myscript.py

[luban@lunbanworks 5] ~ >./myscript.py
myname=luban: Command not found.
lpr: Unable to access "myname" - No such file or directory


use /home/luban/bin/python myscript.py can work:*

*[luban@lunbanworks 5] ~ > */home/luban/bin/python myscript.py*
myname is luban


After I *change the shebang line to
#!/home/luban/Linux/Python/2.7.3/bin/python, use ./ can execute the script.
*
[luban@lunbanworks 6] *~ >*cat myscript.py
#!/home/luban/Linux/Python/2.7.3/bin/python
myname="lunban"

print "myname is %s" % myname

[luban@lunbanworks 7] *~ >*./myscript.py
myname is luban


My question is:

Why  when I use #!/home/luban/Linux/Python/2.7.3/bin/python at the
beginning of myscript.py, *./*myscript.py can work,

but if I use the wrapper #!/home/luban/bin/python in my python script, use *
./*  to run the script, it cannot not work?


I had many scripts used #!/home/luban/bin/python when I only installed
python  under #!/home/luban/ for Linux, they can run with ./, I don't want
to change them,

so, how to let ./ run the python script If I want to *KEEP* wrapper
#!/home/luban/bin/python as the shebang line?


Best Regards,
Luban
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Run python script with ./

2013-04-06 Thread LubanWorks
I have test that wrapper, under Bash 4.1.2, ./myscript.py works, it doesn't
work under Bash 3.2.25, seems Bash relative.

http://stackoverflow.com/questions/15838183/run-python-script-with-dot-slash


On Fri, Apr 5, 2013 at 11:58 PM, Dylan Evans  wrote:

>
>
>
> On Sat, Apr 6, 2013 at 1:04 AM, LubanWorks  wrote:
>>
>>
>>
>> My question is:
>>
>> Why  when I use #!/home/luban/Linux/Python/2.7.3/bin/python at the
>> beginning of myscript.py, *./*myscript.py can work,
>>
>> but if I use the wrapper #!/home/luban/bin/python in my python script, use
>> *./*  to run the script, it cannot not work?
>>
>
> Your shell will be trying to run your python script. The reason being that
> when you do #!/bin/sh in the wrapper the shell tries to execute $0 which in
> this case is the name of your python script.
>
>
>>
>>
>> I had many scripts used #!/home/luban/bin/python when I only installed
>> python  under #!/home/luban/ for Linux, they can run with ./, I don't want
>> to change them,
>>
>> so, how to let ./ run the python script If I want to *KEEP* wrapper
>> #!/home/luban/bin/python as the shebang line?
>>
>>
> Probably easier to use a symlink, or just use #!python and adjust your
> $PATH.
>
>
>>
>> Best Regards,
>> Luban
>>
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>>
>
>
> --
> "The UNIX system has a command, nice ... in order to be nice to the other
> users. Nobody ever uses it." - Andrew S. Tanenbaum
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list