[pypy-dev] Use pypy if available otherwise fallback to CPython
Maciej Fijalkowski
fijall at gmail.com
Wed Jan 11 00:51:22 CET 2012
On Wed, Jan 11, 2012 at 1:44 AM, kgardenia42 <kgardenia42 at googlemail.com> wrote:
> Hi,
>
> I have some python code (lets call it main.py) which I'd like to run
> with pypy if available/installed but otherwise fallback to CPython.
>
> Clearly if I call my main.py explicitly with either "pypy" or "python"
> as follows then I will get the behavior I want:
>
> python main.py
> pypy main.py
>
> However, my goal is that main.py is executable and I can just do:
>
> ./main.py
>
> and it will use pypy if installed, otherwise fallback to normal python.
>
> In the archives of this list I found the following idiom:
>
> try:
> import __pypy__
> except ImportError:
> __pypy__ = None
>
> However, I don't think this helps me here. It seems like (and correct
> me if I'm wrong) the code just detects python vs pypy when it has
> already been run with one or the other. It doesn't accomplish my
> stated goal and it seems like that idiom would only make sense if I
> wanted custom code to run depending on whether I run from python or
> pypy. Did I miss something?
>
> So otherwise, what can I put in the shebang line of my main.py to
> accomplish my goal? I assume if I make it /usr/bin/python then I will
> just always use CPython (irregardless of whether I do the import
> __pypy__ trick). So all I can think of is the rather brute-force
> approach of creating my own wrapper shell script (e.g.
> /usr/bin/python-selector) which delegates to pypy if available but
> otherwise uses /usr/bin/python. I then put #!/usr/bin/python-selector
> as the shebang line of my main.py. Does that make sense?
>
> I'm pretty sure I must be missing a trick here and there is a better way.
>
> Any guidance welcome.
>
> Thanks.
> _______________________________________________
> pypy-dev mailing list
> pypy-dev at python.org
> http://mail.python.org/mailman/listinfo/pypy-dev
You can either do that, or do something like:
if_pypy_installed (however you check it depends on your os/distro):
os.system(pypy, sys.argv) with correct parsing of argv and putting
it there, not sure how to do it ;-)
More information about the pypy-dev
mailing list