[Distutils] Import error from Trac for Setuptools
Phillip J. Eby
pje at telecommunity.com
Fri Jul 21 00:17:04 CEST 2006
At 05:18 PM 7/20/2006 -0400, chtaylo3 wrote:
>I'm running Tracd as a normal user. When I try and access the tracd server
>from a remote computer, I get the error mentioned at the end of this
>looks like a new Workset object is being created with no parameters. So
>because entries==NONE then entires=sys.path in the constructor. It then
>add_entry which calls find_distributions(). Somehow (I'm not sure how), we
>get into find_on_path where os.listdir() is called, and this is where it
> >From the errors given, it looks like it's trying to do a listdir on the
>contents of /usr/bin and it get's into permissions trouble. However,
>is not part of $PYTHONPATH and therefore should not be in the results
>When I run python from the shell, and import sys and then do a sys.path I get
>the following output:
>So I have two questions
>1) From a simple import command, how are we getting into find_on_path when
>it's find_distributions that is being called?
find_distributions returns a dynamically-chosen generator, based on whether
the path is a directory or a zipfile (or other type of importer). In this
case, it's find_on_path, which looks in a directory to see what projects
>2) What could have interjected the /usr/bin dir into the $PYTHONPATH variable
>that reuslts in us calling listidr on /usr/bin?
It's not being injected in $PYTHONPATH. What's presumably happening is
that the script that starts trac is in /usr/bin. Python always includes
the startup script's directory in sys.path.
Thus, a quick way to work around this would be for you to copy the script
from /usr/bin to some other directory, and run that copy instead of the one
in /usr/bin. That way, it won't scan a directory you don't have
permissions to read.
Meanwhile, I'll make sure that the problem (of handling directory
permission errors gracefully) is addressed in a future release of
setuptools. Thanks for the very detailed and well-investigated problem report!
More information about the Distutils-SIG