Good start, but I can see quite a few issues with this.

1. It will cause a needless HTTP request when loading local files was the intention.
2. self.base_url should be tested first. If it's empty then assume it's a local path.
3. urlparse.urljoin should be used for joining the urls.
4. A catch-all except handler is very dangerous. Better to catch just the urllib2 exception that is required (if needed at all, see below).

To solve these:
1. First check whether it starts with http:// or https://. If it does then perform the HTTP read.
2. If it doesn't then test whether the local path exists.
3. If the local path exists, perform the local load.
4. If the local path doesn't exist and self.base_url is set, then perform the URL join, then perform the HTTP read.
5. You shouldn't require a catch-all now because if self.base_url was set and the local file didn't exist then we assume that the user wanted a remote URL and it failed to load, which in that case we want to propagate the urllib2 exception and notify the user of failure.