On 14/12/12 03:45:18, Steven D'Aprano wrote:
> I understand this is not exactly a Python question, but it may be of 
> interest to other Python programmers, so I'm asking it here instead of a 
> more generic Linux group.
> 
> I have a Centos system which uses Python 2.4 as the system Python, so I 
> set an alias for my personal use:
> 
> [steve@ando ~]$ which python
> alias python='python2.7'
>         /usr/local/bin/python2.7
> 
> 
> When I call "python some_script.py" from the command line, it runs under 
> Python 2.7 as I expected. So I give the script a hash-bang line:
> 
> #!/usr/bin/env python
> 
> and run the script directly, but instead of getting Python 2.7, it runs 
> under Python 2.4 and gives me system errors.
> 
> When I run env directly, it ignores my alias:
> 
> steve@ando ~]$ /usr/bin/env python -V
> Python 2.4.3
> 
> 
> What am I doing wrong?

You're using an alias.  Aliases are not normally exported, and
even if they are (e.g. ksh can be configure to export aliases),
env doesn't recognize them.

What would work, is changing your PATH environment variable
so that the first python on your PATH is the one you want,
or a symlink pointing to it.

The Pythonic way to get what you want, is to be explicit:

#!/usr/local/bin/python2.7 -V

If you do that, it will even work in situations where you
can't control PATH, such as CGI scripts and cron jobs.

There are situations where using #!/usr/bin/env makes sense,
but yours isn't one of them.

Hope this helps,

-- HansM




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

Reply via email to