diff --git a/pkgs/development/python-modules/virtualenv-change-prefix.patch b/pkgs/development/python-modules/virtualenv-change-prefix.patch new file mode 100644 index 000000000000..5093fdbead94 --- /dev/null +++ b/pkgs/development/python-modules/virtualenv-change-prefix.patch @@ -0,0 +1,29 @@ +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) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 9def8413a851..09d8b5c0ec76 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2266,6 +2266,8 @@ let pythonPackages = python.modules // rec { md5 = "1072b66d53c24e019a8f1304ac9d9fc5"; }; + patches = [ ../development/python-modules/virtualenv-change-prefix.patch ]; + doCheck = false; meta = with stdenv.lib; {