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

Version not found

This usually means you just need to update pyenv. Upgrading pyenv is really easy when you are using the method of installing from the git repo. This is the main reason why I dont use brew install pyenv but rather just use the git clone to your ~/.pyenv directory.

To upgrade:

cd ~/.pyenv
git pull origin master

Once this is done, you should see updated list of versions available to install when running:

pyenv install --list

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