Python Virtual Environments
Overview to conda environments
Installing miniconda
- Download and install miniconda3 as non-admin user from https://docs.conda.io/en/latest/miniconda.html
- Get the "Miniconda3 Linux 64-bit" version
- NOTE: You may need to remove a $HOME/.condarc file if you have one to prevent repo source conflicts
cd $HOME mkdir $HOME/tmpconda TMPDIR=$HOME/tmpconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh TMPDIR=$HOME/tmpconda bash Miniconda3-latest-Linux-x86_64.sh
- (Accept license agreement and all the suggested default choices)
- Note that if you do not want conda's base environment to be activated upon startup, run the following:
conda config --set auto_activate_base false
Now try creating a test conda environment:
cd ~/miniconda3/envs ~/miniconda3/bin/conda create -n testenv2_3.11.4 -c conda-forge time numpy requests pygrib netCDF4 scipy python=3.11.4 ~/miniconda3/bin/conda init bash
- (Open a new xterm and type 'bash')
conda activate $HOME/miniconda3/envs/testenv cd $HOME/miniconda3/envs/testenv
- (do work)
conda deactivate
Other useful commmands (see https://www.python.org/downloads/ for specific python versions) :
conda create -n testenv2 python=3.11.3 conda activate testenv2 conda update conda (update just the conda package) conda update --all (update all conda packages) python3 -m pip list --outdated python3 -m pip install --upgrade <package_name> conda install conda=23.3.1 (installing or force-installing a specific conda package version) conda -V (the conda version) conda remove --name myenv --all (remove a conda environment)
Running a cron under conda (is this correct?)
21 15 * * * conda activate testenv2; /path/to/script.py > /tmp/output.txt (just call the correct version of python in first line of the script)
Questions/Tests:
- Create a conda test env with specific version of python
- Run a script using that new test environment
- Update the first line to point to the correct version of python
- Run cron under conda
- If you update the first line in the script to point to desired conda version of python, then no need to activate the conda env (?)
Using venv to set up a python virtual environment
Note: This method does not allow for running a different version of python that is natively installed on the system.
python3 -m venv venv_test source venv_test/bin/activate cd venv_test pip list pip install --upgrade pip pip install pygrib (venv_test) (base) [user@host: ~/venv_test]$ pip list Package Version ---------- --------- certifi 2022.6.15 numpy 1.21.6 pip 22.1.2 pygrib 2.1.4 pyproj 3.2.1 setuptools 40.6.2
When done working:
deactivate
Setting up a python virtual environment (with virtualenv)
Note: This method does allow for running a different version of python that is natively installed on the system.
dnf install virtualenv virtualenv --python="/usr/local/bin/python" "/path/to/the/venv_dir/" cd /path/to/the/venv_dir source bin/activate
See Python Alternative Upgrade Notes for installing a different/local version of python.