I have really grown to like the Pipefile and Pipfile.lock solution for managing Python packages. Also, it uses the .python-version to pick the Python version you have installed with some light testing.

Basic patterns

When ever I start a new project, I use the following commands to initialize a new project to install the version (only done once if a new version), switch to global once, install pipenv, then nail down the version to the project to create the .python-version file and use pipenv locally to manage the packages stamped in the Pipfile and Pipfile.lock.

# if a new version
# this is done once
pyenv install #.#.#
pyenv global #.#.#
pip install pipenv
# after install
pyenv local #.#.#
pipenv install package-name
pipenv install dev-tool --dev

What I found

Over time I have gathered these possible solutions to fixing some issues with Pipenv.

Stuck inside a virtualenv

  • Problem

A virtualenv follows you around everywhere, but you are not in one.

  • Possible Solutions
  1. unset VIRTUAL_ENV

Pipenv says you are using wrong version

  • Problem

Pipenv says you are using the wrong version of Python.

  • Possible Solutions
  1. Nail down the Python version
    • I use pyenv local #.#.# that creates a .python-version file
    • cd .. then return with cd - to load the .python-version file
  2. Kill the pipenv virtualenv
    • pipenv --rm
    • rebuild with pipenv install