How to get virtualenv to work with fish shell?

You don't need to activate to use virtualenv it is a convenience. You can just use the virtualenv directly:

virtualenv venv
./venv/bin/pip install foo

Have you tried from fish using:

. venv/bin/activate.fish

It probably isn't as widely used as bash so may have issues - looking at the commit history shows a recent fix:

https://github.com/pypa/virtualenv/blob/master/virtualenv_embedded/activate.fish


For virtualenv, fish has a separate activation file in the in the bin directory with .fish extension.

So you will have to do:

$ source ~/path/to/bin/activate.fish