← Back to team overview

dolfin team mailing list archive

Re: runpy.run_path missing on buildbot

 

On Wed, Nov 09, 2011 at 10:35:51AM +0100, Johannes Ring wrote:
> On Tue, Nov 8, 2011 at 9:50 PM, Anders Logg <logg@xxxxxxxxx> wrote:
> > On Tue, Nov 08, 2011 at 09:13:20AM +0100, Johannes Ring wrote:
> >> On Mon, Nov 7, 2011 at 9:12 PM, Anders Logg <logg@xxxxxxxxx> wrote:
> >> > On Sat, Nov 05, 2011 at 06:02:05PM +0100, Johannes Ring wrote:
> >> >> On Sat, Nov 5, 2011 at 2:50 AM, Anders Logg <logg@xxxxxxxxx> wrote:
> >> >> > Some unit tests are failing on my buildbot because runpy.run_path is
> >> >> > missing.
> >> >> >
> >> >> > It seems it was added in Python 2.5.
> >> >>
> >> >> It was added in Python 2.7 according to the Python docs:
> >> >>
> >> >> http://docs.python.org/library/runpy.html#runpy.run_path
> >> >
> >> > ok, does anyone know what the proper replacement is for Python 2.5?
> >>
> >> Can you use execfile?
> >
> > I ended up using os.system since execfile doesn't seem to handle
> > command-line arguments:
> >
> > def run_path(path, args):
> >    "Replacement for runpy.run_path when it doesn't exist"
> >
> >    if has_run_path:
> >        sys.argv = ["foo"] + [str(arg) for arg in args]
> >        runpy.run_path(path)
> >    else:
> >        status = os.system("python " + path + " " + \
> >                           " ".join(str(arg) for arg in args))
> >        if not status == 0:
> >            raise RuntimeError, "Python script failed"
>
> It seems to me that execfile does handle command line arguments. Example:
>
> In test1.py:
>
>     execfile("test2.py")
>
> In test2.py:
>
>     import sys
>     print sys.argv
>
> Then:
>
>     $ python test1.py 1 2 3 4
>     ['test1.py', '1', '2', '3', '4']
>
> But you have a solution that works now so I guess it's not a big deal.

The thing that didn't work (or I did some other mistake) was this:

In test1.py:

    import sys
    sys.argv = ["foo", "1", "2"]
    execfile("test2.py")

In test2.py:

    import sys
    print sys.argv

--
Anders


Follow ups

References