How to export virtualenv?


Question

I'm new to virtualenv but I'm writting django app and finally I will have to deploy it somehow.

So lets assume I have my app working on my local virtualenv where I installed all the required libraries. What I want to do now, is to run some kind of script, that will take my virtualenv, check what's installed inside and produce a script that will install all these libraries on fresh virtualenv on other machine. How this can be done? Please help.

1
34
2/5/2013 10:32:04 AM

Accepted Answer

You don't copy paste your virtualenv. You export the list of all the packages installed like -

pip freeze > requirements.txt

Then push the requirements.txt file to anywhere you want to deploy the code, and then just do what you did on dev machine -

$ virtualenv <env_name>
$ source <env_name>/bin/activate
(<env_name>)$ pip install -r path/to/requirements.txt

And there you have all your packages installed with the exact version.

You can also look into Fabric to automate this task, with a function like this -

def pip_install():
    with cd(env.path):
        with prefix('source venv/bin/activate'):
            run('pip install -r requirements.txt')
71
2/4/2013 10:48:45 AM

You can install virtualenvwrapper and try cpvirtualenv, but the developers advise caution here:

Warning

Copying virtual environments is not well supported. Each virtualenv has path information hard-coded into it, and there may be cases where the copy code does not know it needs to update a particular file. Use with caution.

I haven't tested this out enough yet, but I'll update here after I know how well (or poorly) this works.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon