You can create a file of dependencies with pip
very easily which will mean that the correct versions of each app will be maintained between servers
# Save dependancies to a file
pip freeze > requirement_file.txt
creates a file something like:
django==1.3
django-tagging
markdown
...
which can be later used to reinstall the listed apps on a different server
# Install all dependencies in the file
pip install -r requirement_file.txt
This is a nice and simple approach. You can get more complicated with the likes of zc.buildout
http://pypi.python.org/pypi/zc.buildout
which helps manage packages (python and non-python) via scripts (you create 'recipes' containing the details of the packages you need installed)
If you need broader control over server installs you could use 'puppet' or 'chef'
http://projects.puppetlabs.com/projects/1/wiki/Big_Picture
http://wiki.opscode.com/display/chef/Chef+Server
which are aimed at automating and deploying more than just dependencies, but entire servers
I haven't needed to use more then simple pip requirements files, but the other options are great if you need more.
EDIT
Keeping your own version of the apps in your project root/python path can become cumbersome and difficult to track, I'd suggest using a pip requirement file.