Skip to content Skip to sidebar Skip to footer

What Parts Of A Virtualenv Need To Be Changed To Relocate It?

So, I've got a Python program with a ridiculous number of addons/packages. I'd like to be able to distribute the program in its virtualenv, so that the packages come bundled. Howev

Solution 1:

Rather than trying to do this manually, you'd be better off using the freeze option to pip to create a requirements file. You can now rebuild your entire virtualenv with a single command.

On old virtualenv:

pip freeze > stable-req.txt

On the new one:

pip install -r stable-req.txt

Solution 2:

For your virtual environment directory {ENV} follow these steps

  1. Run $ virtualenv --relocatable {ENV}
  2. Edit {ENV}/bin/activate, using vim or editor of your choice
  3. Edit VIRTUAL_ENV (around line ~42!)to match the new directory location

So if you are looking to write a script, you can either export VIRTUAL_ENV shell variable or perform the edit on /bin/activate dynamically.

This is how I've setup mine.

# env/bin/activate
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# virtual env is at ./env
ENV_DIR=`dirname $BIN_DIR`
VIRTUAL_ENV=$ENV_DIR
export VIRTUAL_ENV

Solution 3:

virtualenv-tools is a script to update an existing virtualenv's location after you move it. While it doesn't help on Windows, it might be useful to others.

It updates:

  • the virtualenv activation scripts
  • shebang lines in scripts in the virtualenv bin/ directory
  • absolute paths stored in .pyc files
  • symlinks in any local/ directory

Post a Comment for "What Parts Of A Virtualenv Need To Be Changed To Relocate It?"