Investigating a strange error that I started getting all of a sudden with gdb-python, I reduced it down to this:
C:\Users\User>python -i
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win 32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> dir(os.path)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'path'
>>> dir(os)
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
Looking through some other 'module' object has no attribute
answers, the most common suggestion is that there must be another rogue os.py
somewhere in sys.path
, and that it was getting loaded, rather than the built-in one. But I checked in PYTHONPATH
environment variable, and in the current directory, and there wasn't any other os.py
.
So I looked for a way to find the name of the file where an entity was defined, and unsurprisingly, Python has such a facility in the form of the inspect
module.
>>> inspect.getsourcelines(os)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Programs\Python273\lib\inspect.py", line 690, in getsourcelines
lines, lnum = findsource(object)
File "C:\Programs\Python273\lib\inspect.py", line 527, in findsource
sourcefile = getsourcefile(object)
File "C:\Programs\Python273\lib\inspect.py", line 451, in getsourcefile
if os.path.exists(filename):
AttributeError: 'module' object has no attribute 'path'
So inspect
was relying on os.path
, and then I ran out of ideas.
I haven't installed anything new recently. The only thing that happened was a forced shutdown that I had to do, which might have coincided with running a Python script, since I was running a short Python script in a loop repeatedly when the machine became unresponsive and the forced shutdown occurred.