diff --git a/gi/__init__.py b/gi/__init__.py
index c1aba69..db439be 100644
--- a/gi/__init__.py
+++ b/gi/__init__.py
@@ -34,29 +34,42 @@ import os
 _versions = {}
 _overridesdir = os.path.join(os.path.dirname(__file__), 'overrides')
 
+version_info = _gobject.pygobject_version[:]
+__version__ = "{0}.{1}.{2}".format(*version_info)
 
 def require_version(namespace, version):
     repository = Repository.get_default()
 
-    if namespace in repository.get_loaded_namespaces():
-        loaded_version = repository.get_version(namespace)
-        if loaded_version != version:
-            raise ValueError('Namespace %s is already loaded with version %s' %
-                             (namespace, loaded_version))
+    if namespace is "pygobject":
+        version_list = tuple(map(int, version.split(".")))
+        if version_list > version_info:
+            raise ValueError((
+                "pygobject's version {0} required, and available version "
+                "{1} is not recent enough").format(version, __version__)
+            )
 
-    if namespace in _versions and _versions[namespace] != version:
-        raise ValueError('Namespace %s already requires version %s' %
-                         (namespace, _versions[namespace]))
+    else:
+        if namespace in repository.get_loaded_namespaces():
+            loaded_version = repository.get_version(namespace)
+            if loaded_version != version:
+                raise ValueError(
+                    'Namespace %s is already loaded with version %s' %
+                     (namespace, loaded_version)
+                )
 
-    available_versions = repository.enumerate_versions(namespace)
-    if not available_versions:
-        raise ValueError('Namespace %s not available' % namespace)
+        if namespace in _versions and _versions[namespace] != version:
+            raise ValueError('Namespace %s already requires version %s' %
+                             (namespace, _versions[namespace]))
 
-    if version not in available_versions:
-        raise ValueError('Namespace %s not available for version %s' %
-                         (namespace, version))
+        available_versions = repository.enumerate_versions(namespace)
+        if not available_versions:
+            raise ValueError('Namespace %s not available' % namespace)
 
-    _versions[namespace] = version
+        if version not in available_versions:
+            raise ValueError('Namespace %s not available for version %s' %
+                             (namespace, version))
+
+        _versions[namespace] = version
 
 
 def get_required_version(namespace):
