There is a lot of confusion out there how to install and manage python packages within systems and projects. There are some rules of thumb which keep you happy when heeded.
Stay away from system's site-packages
Many of today's system tools depend on Python and are tested against your system's packages and versions. Modifying your system's packages or their versions may lead to unexpected annoyances.
When using pip I would advice you to set
By this pip will complain when you try to install stuff without any
activated virtual environment.
Use PyPi packages
Don't depend on your system's site-packages for your apps and programs as they may change with every system update and thereby trash it.
Imagine you only defined python-requests as one of your app's dependencies. In Debian "jessie" this would lead to version 2.4.3-6 installed. In "wheezy" it would lead to 0.12.1-1+deb7u1. Sounds like a good chance to break your app.
Even if your software works flawlessly against your current system's packages a up- or downgrade of your system would have the potential to break your application.
Above rules lead inevitably to this one. virtualenv - if not heard of yet - leaves your system's site-packages untouched by introducing virtual environments. An environment consists of an isolated bunch of packages which don't affect your system's ones or those of the other environments.
For a even better
virtualenv experience through some more comfort use
If you are working with graphical operating systems from Redmond you should virtualenvwrapper-win a try.
Use pipsi for CLI tools
You need some 3rd party CLI tools based on python, like Pygments,
pip-tools, yolk, etc.? Or some of the requirements of those tools
exclude some of each others dependencies? No problem. Use
pipsi sets up a
virtualenv for each of your favorite CLI tools and hides them - the
environments, not the tools - from you.