[wingide-users] Changing Python Path from Script
vania at pandorasdream.com
Sat Jan 13 11:20:39 MST 2007
Don't know if this will help you, but in my project, I have everything, the
whole namespace of the importable modules, and the applications (like your
unit tests) two levels under the root of the namespace, which I call
"pandora". Since my applications are below the root of the namespace, I had
to solve the same problem you do with your unit tests. So in each
application mail file, I include the following section of lines toward the
top of the file:
if __name__ == '__main__':
"""Apps, as a namespace, is part of the code namespace, so the pandora
namespace will need to be dynamically added."""
thisPath = 
thisPath = os.path.abspath(os.path.curdir).split(os.sep)
while thisPath.pop() <> 'pandora':
thisPathString = os.sep.join(thisPath)
This enables me to take the current filepath as a string and split it using
the current system's directory separator and pop off each directory that
isn't the root of the project's name space, at which point I just rejoing
and add it to sys.path.
Let me know if you find this useful. I've never tested it on other machines,
though as you can see I made an attempt to make it cross-platform.
On 1/13/07, Michael Foord <fuzzyman at voidspace.org.uk> wrote:
> Wingware Support wrote:
> > On Sat, 13 Jan 2007, Michael Foord wrote:
> >> All our imports are absolute imports based on the directory of our main
> >> script. This means that the Python path needs to be :
> >> Directory of main script
> >> Main Directory/Python24
> >> We need this setting for autocomplete to work.
> > Maybe this is useful in crafting a work-around for now:
> > As John said, the dir of the main script should be added
> > automatically so nothing should be needed here.
> How ?
> If I load the file :
> How is 'Main' automatically added to the Python Path ?
> > Also, the
> > location of the main debug file (as set from Debug menu) is
> > stored in the project as a partial path, relative to the project
> > location, so it should work when checking things out to different
> > locations.
> So every time we do a new checkout we need to create a new project file.
> This is what I meant about dynamically creating/modifying project files.
> We could solve this by having a project file in the main directory - but
> that means polluting the main directory of our repository. This isn't
> out of the question.
> It still doesn't solve the problem of when we are working on two branches.
> Say we have a file from a modified branch / checkout. We want to
> simultaneously load the same file from a fresh checkout to test how
> performance compares. Having a script that can switch the Python Path
> based on the location of the current file will solve that.
> > For the second element, what about using an environment variable?
> > In project and file properties, anything in the form $(ENVNAME)
> > is expanded out from the contents of the environment.
> > So it should work to define the Python Path element as
> > $(MAINDIR)/Python24 and setting MAINDIR environment variable from
> > the command or a shell script / batch file before launching Wing
> > (the script/batch file could of course also launch Wing and open
> > the project)
> > This isn't ideal, but maybe it'll help...
> It's not bad - if my script changes the environment variable
> appropriately then will wing switch to using the new value of the
> environment variable ? My guess is not, but at least I can switch the
> value at the command line and launch a new instance of Wing from the
> command line which *will* use the changed value.
> All the best,
> > - Stephan
> Wing IDE users list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the wingide-users