deptlab:python_virtual_env
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
deptlab:python_virtual_env [2021/10/21 21:05] – created localadmin | deptlab:python_virtual_env [2024/09/17 17:18] (current) – [Using Virtual Environments] localadmin | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Python on lab/shared computers ===== | + | ====== Python on CS Lab and shared research computers ====== |
+ | |||
+ | ===== Why Python Packages are problematic on shared computers ===== | ||
Python has its own unique way of downloading, | Python has its own unique way of downloading, | ||
Line 8: | Line 10: | ||
It’s important to know this because, by default, every project on your system will use these same directories to store and retrieve site packages (third party libraries). At first glance, this may not seem like a big deal, and it isn’t really, for system packages (packages that are part of the standard Python library), but it does matter for site packages. | It’s important to know this because, by default, every project on your system will use these same directories to store and retrieve site packages (third party libraries). At first glance, this may not seem like a big deal, and it isn’t really, for system packages (packages that are part of the standard Python library), but it does matter for site packages. | ||
- | Consider the following scenario where you have two projects: **ProjectA** and **ProjectB**, | + | Consider the following scenario where you have two projects: **ProjectA** and **ProjectB**, |
This is a real problem for Python since it can’t differentiate between versions in the site-packages directory. So both v1.0.0 and v2.0.0 would reside in the same directory with the same name: | This is a real problem for Python since it can’t differentiate between versions in the site-packages directory. So both v1.0.0 and v2.0.0 would reside in the same directory with the same name: | ||
- | Since packages are stored according to just their name, there is no differentiation between versions. Thus, both projects, ProjectA and ProjectB, would be required to use the same version, which is unacceptable in many cases. | + | Since packages are stored according to just their name, there is no differentiation between versions. Thus, both projects, |
This is where virtual environments and the virtualenv/ | This is where virtual environments and the virtualenv/ | ||
+ | |||
+ | ===== What Is a Python Virtual Environment ===== | ||
+ | The main purpose of Python virtual environments is to create an isolated environment for Python projects. This means that each project can have its own dependencies, | ||
+ | |||
+ | In the example above, you’d need to create a separate virtual environments for **ProjectA** and **ProjectB**, | ||
+ | |||
+ | There are no limits to the number of environments you can have since they’re just directories containing a few scripts. Plus, they’re easily created using the virtualenv or pyenv command line tools. | ||
+ | |||
+ | ===== Using Virtual Environments ===== | ||
+ | |||
+ | CS Lab and shared research computers should already have the '' | ||
+ | |||
+ | Start by making a new directory to work with: | ||
+ | |||
+ | $ mkdir python-virtual-environments && cd python-virtual-environments | ||
+ | |||
+ | Create a new virtual environment inside the directory: | ||
+ | |||
+ | '' | ||
+ | |||
+ | **Note:** By default, this will not include any of your existing site packages. | ||
+ | |||
+ | In the above example, this command creates a directory called project_1_env, | ||
+ | < | ||
+ | ├── bin | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├── include | ||
+ | ├── lib | ||
+ | │ | ||
+ | │ | ||
+ | ├── pyvenv.cfg | ||
+ | └── share | ||
+ | </ | ||
+ | |||
+ | Here’s what each folder contains: | ||
+ | |||
+ | * bin: files that interact with the virtual environment | ||
+ | * include: C headers that compile the Python packages | ||
+ | * lib: a copy of the Python version along with a site-packages folder where each dependency is installed | ||
+ | |||
+ | In order to use this environment’s packages/ | ||
+ | |||
+ | $ source project_1_env/ | ||
+ | (project_1_env) $ | ||
+ | | ||
+ | Notice how your prompt is now prefixed with the name of your environment ('' | ||
+ | |||
+ | Now you can use pip to install packages (large packages may take a while to install). | ||
+ | |||
+ | To go back to the “system” context, execute a deactivate: | ||
+ | |||
+ | (env) $ deactivate | ||
+ | $ | ||
+ | |||
+ | Now your shell session is back to normal, and the python command refers to the global Python install. Remember to do this whenever you’re done using a specific virtual environment. | ||
+ | |||
+ | Using Virtual Environment makes it east to reset your Python environment if you need to use a different set of packages. | ||
+ | |||
+ | **Be sure to cleanup/ | ||
+ | |||
+ | ===== Tips for Using a Python3 IDE with Virtual Environments ===== | ||
+ | |||
+ | ==== Using Spyder in the 244 Lab ==== | ||
+ | - Activate (start) your virtual environment. | ||
+ | - Run spyder | ||
+ | - Go to Tools --> preferences --> python Interpreter and select the python file from the virtual env you want to link to Spyder ex : / | ||
+ | |||
+ | ==== Preferred Method on Research Computers: Spyder Method 1 (Use with tensorflow) ==== | ||
+ | To use Spyder. | ||
+ | - Activate (start) your virtual environment. | ||
+ | - Install the needed packages with pip | ||
+ | - Install Spyder into your environment using pip install spyder. | ||
+ | - Then start spyder from the environment command line with the command spyder. | ||
+ | |||
+ | ==== Spyder Method 2 (Doesn' | ||
+ | |||
+ | - Activate (start) your virtual environment. | ||
+ | - Run spyder from the environment (after source activate) | ||
+ | - Go to Tools --> preferences --> python Interpreter and select the python file from the env you want to link to spyder ex : / | ||
+ | |||
+ | |||
+ | |
deptlab/python_virtual_env.1634850302.txt.gz · Last modified: by localadmin