Without this patch `virtualenv --python=python2.7 .` fails with an error because it notices that the python readline.so is not in the same path as python2.7. I assume this is to avoid copying the wrong file on systems where it is possible to find incompatible libraries by accident. Adding "/nix/store" to the prefix fixes this problem. Unfortunately readline is still not available if you just run `virtualenv .`. --- virtualenv-1.6.4/virtualenv.py 2012-05-20 00:40:38.070649647 +0200 +++ virtualenv-1.6.4/virtualenv.py 2012-05-20 00:45:10.596242604 +0200 @@ -951,13 +951,7 @@ def change_prefix(filename, dst_prefix): - prefixes = [sys.prefix] - - if sys.platform == "darwin": - prefixes.extend(( - os.path.join("/Library/Python", sys.version[:3], "site-packages"), - os.path.join(sys.prefix, "Extras", "lib", "python"), - os.path.join("~", "Library", "Python", sys.version[:3], "site-packages"))) + prefixes = ["/nix/store", sys.prefix] if hasattr(sys, 'real_prefix'): prefixes.append(sys.real_prefix) @@ -968,6 +962,8 @@ _, relpath = filename.split(src_prefix, 1) assert relpath[0] == os.sep relpath = relpath[1:] + if src_prefix == "/nix/store": + relpath = "/".join(relpath.split("/")[1:]) return join(dst_prefix, relpath) assert False, "Filename %s does not start with any of these prefixes: %s" % \ (filename, prefixes)