[Baypiggies] Locating the directory you are executing from
varmaa at gmail.com
Wed May 7 08:04:00 CEST 2008
I think one nice thing about using __file__ is that it doesn't necessarily
require your Python file to be the main script that's being executed, as
sys.argv does. For instance, I could have my own script called "foo",
and then import "bar", which loads something relative to its (i.e., bar's)
location in the filesystem. If "bar" uses sys.argv, it would find the
path to foo, but if it uses __file__, it will always find the correct path
regardless of whether it's imported as a module or run as a script.
On Tue, May 6, 2008 at 10:22 PM, Kelly Yancey <kelly at nttmcl.com> wrote:
> Shannon -jj Behrens wrote:
> > On Sun, May 4, 2008 at 1:15 PM, Aahz <aahz at pythoncraft.com> wrote:
> > > On Sun, May 04, 2008, Jeff Younker wrote:
> > > >
> > > > I have a set of development scripts. The scripts can potentially
> > > > be executed from many places. They reference information which is
> > > > relative to their installation paths. (These are build scripts.)
> > > >
> > > > The CI system can supply a fixed root, but when run by the
> > > developers
> > > > I'd like them to be runnable from anywhere in the project, and
> > > still
> > > > have them work.
> > >
> > > If you're willing to require that the script directory NOT be on the
> > > path, just do some manipulation of sys.argv. Otherwise, __file__
> > > is
> > > the right approach.
> > >
> > Heh, I have this same problem ;)
> > -jj
> Here is the snippet I've been using. It supports running both as a
> python script and as a binary created by py2exe. It also works on systems
> that return paths encoded with with non-ASCII character sets (e.g. non-U.S.
> version of Windows).
> import locale
> import os
> import sys
> if hasattr(sys, 'frozen'):
> # Running as executable generated by py2exe.
> runpath = sys.executable
> # Running as python script.
> runpath = sys.argv
> rundir = os.path.dirname(unicode(runpath,
> I am curious though: how is extracting the path from __file__ better than
> extracting it from sys.argv? The best I can tell (from simple test
> scripts) is that both yield the same results.
> Kelly Yancey
> Baypiggies mailing list
> Baypiggies at python.org
> To change your subscription options or unsubscribe:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Baypiggies