I first exposed to python development environment with Conda and then I switched to the lightweight Miniconda.
I was happy with this solution for a long while.
Then I was not.
I realized that issuing pip within a conda environment does not isolate the package to that conda environment (kinda defeats the purpose here), and this was when I started having failure of (?) package resolution when trying to install packages through conda.
Then I thought, maybe I should try something else.
Previously, I was happy with simple venv module (python3 built-in), and I still use it from time-to-time for small projects.
However, I intended to find a user-wide replacement like how conda previously served me.
Inspired by a write-up on python project setup by Bas Steins, I decided to give pipenv a shot.
python3 -m pip install pipx
pipx install pipenv
I decided to use pypa/pipx to ensure isolation of pipenv from other python system packages.
# Create a directory for the pipenv environment
mkdir -p ~/.local/share/<venv-name>
cd ~/.local/share/<venv-name>
# Start installing python packages
pipenv install pandas
Usually I have these packages installed: ipykernel. openpyxl, flake8, matplotlib, ipython, xlrd, seaborn, sklearn, statsmodels, scipy, odfpy, streamlit, jupyterlab.
Issuing pipenv --venv reveals the location of the environment, usually defaults to /home/<user>/.local/share/virtualenvs/<venv-name> (on a linux system).
To enable automatic venv activation on the shell, I added the following line to ~/.zshrc:
source /home/<user>/.local/share/virtualenvs/<venv-name>/bin/activate
To deactivate, simply remove that line above from ~/.zshrc or issue deactivate at terminal.
Issuing pipenv --rm while being inside ~/.local/share/<venv-name> removes the virtual environment.
The nice thing about this setup is that VS Code recognizes the location of the virtualenvs.