Pip caching

Every command from your circle.yml is executed in a separate subshell, therefore any changes made to the shell environment, like settings and environment variables, will not be transferred into the subsequent commands.

One way to work around this could be to adjust the ~/.circlerc file on the container—its content is source’d before each command. You could either append things to that file or, for example, remove all the lines associated with virtualenv (specifically lines containing activate or deactivate).