To use version 0.7.3 of python SqlAlchemy it is nescesary to explicitly load it so as not to get the system version of SQLAlchemy. The prefered method is to auto adjust the import path as follows (which needs a Requires: added for python-setuptools): >>> import __main__; __main__.__requires__ = __requires__ = [] >>> __requires__.append('SQLAlchemy >= 0.6.3') >>> import pkg_resources; pkg_resources.require(__requires__) >>> import webob Note __requires__ may already be initialised, so if you need to update it, you can do something like: >>> try: >>> from __main__ import __requires__ >>> except ImportError: >>> import __main__ >>> __main__.__requires__ = [] >>> __requires__ = __main__.__requires__ >>> else: >>> if isinstance(basestring, __requires__): >>> __requires__ = [__requires__] Note also, that if something has already loaded pkg_resources, then any changes to __requires__ are ignored. This is the case for modules loaded by sphinx-build for example. To fix that, one can run a locally modified version of sphinx-build, or instead delve a bit deeper into pkg_resources to force it to load the parallel installed egg, like: >>> import sys >>> import pkg_resources >>> >>> # If there is a conflicting non egg module, >>> # i.e. an older standard system module installed, >>> # then replace it with this requirement >>> def replace_dist(requirement): >>> try: >>> return pkg_resources.require(requirement) >>> except pkg_resources.VersionConflict: >>> e = sys.exc_info()[1] >>> dist=e.args[0] >>> req=e.args[1] >>> if dist.key == req.key and not dist.location.endswith('.egg'): >>> del pkg_resources.working_set.by_key[dist.key] >>> # We assume there is no need to adjust sys.path >>> # and the associated pkg_resources.working_set.entries >>> return pkg_resources.require(requirement) >>> >>> print replace_dist("SQLALchemy >= 0.6.3") One can also resort to manually modifying sys.path with a hardcoded path like: >>> import sys >>> sys.path.insert(0, '/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6.egg')