Python Virtual Environments for EWS

The following commands will load either our base python 2.7.10 or python 3.4.3 modules
(For more information about our Linux module system please see here:  https://it.engineering.illinois.edu/user-guides/software/linux-software-...)

[netid@linux-a2 ~]$ module load python3/3.4.1

[netid@linux-a2 ~]$ module load python/2.7.10

These two modules contain the basic install along with pip and setuptools.  From here you can go about creating your own custom python install into your home directory. 

[netid@linux-a2 ~]$ virtualenv <env-name> 
# this will create and setup the virtual environment into the directory specified

[netid@linux-a2 ~]$ virtualenv /home/netid/my-env-1

To activate and begin working in your virtual python environment.

[netid@linux-a2 ~]$ source <env-name>/bin/activate

[netid@linux-a2 ~]$ source /home/netid/my-env-1/bin/activate

Once you have activated your environment you can use the standard pip to manage packages within that environment.

(my-env-1) [netid@linux-a2 ~]$ pip install <package-name>

(my-env-1) [netid@linux-a2 ~]$ pip install nltk
Collecting nltk
Downloading nltk-3.1.tar.gz (1.1MB)
100% |████████████████████████████████| 1.1MB 89kB/s
Building wheels for collected packages: nltk
Running setup.py bdist_wheel for nltk
Stored in directory: /home/netid/.cache/pip/wheels/dc/8a/6c/764cd4ca5530
Successfully built nltk
Installing collected packages: nltk
Successfully installed nltk-3.1

You can see in the above examples that the name of your current environment is printed before your bash prompt.  This makes it easier to track where you are when working with multiple virtual environments.
To leave your virtual environment and return to your normal environment: 

(my-env-1) [netid@linux-a2 ~]$ deactivate
[netid@linux-a2 ~]$

You can create multiple different environments as needed.  Additionally, you can export your environment so that another person may load the exact same environment to test your code.
While your environment is activated this is done via:

(my-env-1) [netid@linux-a2 ~]$ pip freeze > /path/to/text/file.txt

(my-env-1) [netid@linux-a2 ~]$ pip freeze > /home/netid/my-env-1-freeze.txt
nltk==3.1
wheel==0.24.0
(my-env-1)[netid@linux-a2 ~]$

When another person wishes to load said environment the command would be as follows:

[netid@linux-a2 ~]$ virtualenv <env-name> 
[netid@linux-a2 ~]$ source <env-name> /bin/activate
(env-name)[netid@linux-a2 ~]$ pip install –r /path/to/text/file.txt

[netid@linux-a2 ~]$ virtualenv /home/netid/import-env
New python executable in /home/netid/import-env/bin/python
Installing setuptools, pip, wheel...done.
[netid@linux-a2 ~]$ source import-env/bin/activate
(import-env)[netid@linux-a2 ~]$ pip install -r /home/netid/my-env-1-freeze.txt
Collecting nltk==3.1 (from -r /home/netid/my-env-1-freeze.txt (line 1))
Requirement already satisfied (use --upgrade to upgrade): wheel==0.24.0 in ./import-env/lib/python2.7/site-packages (from -r /home/netid/my-env-1-freeze.txt (line 2))
Installing collected packages: nltk
Successfully installed nltk-3.1
(import-env)[netid@linux-a2 ~]$

One caveat to note is that if a pip package install is dependent on system libraries which are absent, the install will fail and the libraries will need to be installed in the normal way (usually by the system administrator) before the pip package can be installed. 

Get Help

Questions about this topic? Don't see what you're looking for?

Email engrit-help [at] illinois [dot] edu, call the Help Desk at 217-333-1313, or contact your primary IT support professional.