I think you are on the right path, can you try running gps_hardware_test.py which is in the same folder as gps.py and post the output here. Also, do let us know if the error goes away.
The GPS sensor is a bit different than other sensors. It uses serial, so basically it keeps on sending messages which give the data from the GPS. For the GPS to work properly, it has to get a signal from the GPS satellites, this is called getting a fix. Sometimes when you are indoors where it might be harder to get a signal from the GPS satellites, the GPS has no proper data to send back, also the module usually takes less than a minute to actually start getting the signal from the GPS satellites, so one of the things that might be happening is that the GPS does not have any data which can be read which might be causing the error that you got. Running the gps_hardware_test.py would show the raw data from the GPS and help in debugging the problem.
@graykevinb is right and it would be harder to run this program from the interpreter. We have a class here which basically parses through the datastream as it comes from the GPS to pick out the parameters that are important and returns them to wherever you call it from, like here and then you can use those values independently.