How to correctly move over 'lib' directory from local virtualenv to droplet?

January 26, 2015 1.4k views

I am trying to migrate over my virtualenv on my local machine to my droplet. Can I just create a new virtualenv on my droplet and then literally copy over the lib directory from my local machine into the virtualenv directory on my droplet? I am specifically wanting to know how to properly move over that lib directory.

If I can't just copy that directory, am I going to have to install all those libraries from scratch again?

2 Answers

Yes, the best way to do this is to re-install the packages inside of the new virtualenv on your droplet. Luckily, there is an easily supported way to do this in one shot. Inside of the local virtualenv, run:

(local-virtualenv) $ pip freeze > requirements.txt

This will create a requirements.txt listing the installed libraries and their dependencies. Copy that file onto your droplet. Then inside the virtualenv on the droplet, run:

(droplet-virtualenv) $ pip install -r requirements.txt

This will install all of the libraries listed in the file, recreating your development environment.

I forgot to include an important piece of information which is that, most of my dependencies have been modified (by me), and are not hosted anywhere. This is why I'm confused on what is the best way to move those over.

  • One thing that might be interesting in that case is pip's ability to install directly from a Git repo listed in the requirements.txt files. You could make a GitHub fork of the changes you've made to the dependencies. Check this out in the pip docs.

Have another answer? Share your knowledge.