Ah, that means the real AttributeError is happening inside of the @property; the AttributeError being raised is after the fallback. Unfortunately, due to the way Python's attribute handling works, if there's an attribute error raised by a property getter, and the object has a __getattr__, then the real error is discarded and the __getattr__ is called instead.
So whatever error you're getting needs to be tracked down inside the @property; my guess, given what you're doing when this is happening, is that it has something to do with the environment marker parsing (in invalid_marker() or evaluate_marker()). You might try importing those functions at the Python prompt and seeing if they are working correctly at all on your machine.
Ok, after some debugging it looks like the problem is with "import parser". I had my own parser module from another package which had higher precendence in PYTHONPATH and that module was getting imported which led to this error ultimately. I am marking this issue as resolved.