diff --git a/doc/api/pymongo/index.rst b/doc/api/pymongo/index.rst index 2f436f99c..4baa3878f 100644 --- a/doc/api/pymongo/index.rst +++ b/doc/api/pymongo/index.rst @@ -9,6 +9,8 @@ Alias for :class:`pymongo.connection.Connection`. + .. autofunction:: has_c + Sub-modules: .. toctree:: diff --git a/pymongo/__init__.py b/pymongo/__init__.py index 180848d3a..110dba755 100644 --- a/pymongo/__init__.py +++ b/pymongo/__init__.py @@ -33,3 +33,12 @@ version = "1.4+" Connection = PyMongo_Connection """Alias for :class:`pymongo.connection.Connection`.""" + +def has_c(): + """Is the C extension installed? + """ + try: + from pymongo import _cbson + return True + except ImportError: + return False diff --git a/tools/fail_if_no_c.py b/tools/fail_if_no_c.py index 7f86e1dbe..60033b90f 100644 --- a/tools/fail_if_no_c.py +++ b/tools/fail_if_no_c.py @@ -20,7 +20,7 @@ Only really intended to be used by internal build scripts. import sys sys.path[0:0] = [""] -try: - from pymongo import _cbson -except ImportError: +import pymongo + +if not pymongo.has_c(): sys.exit("could not import _cbson")