Talvez seja hora de considerar o uso de virtualenv . Virtualenv cria ambientes python independentes usando a versão do python que você especificar. Depois de ativar o novo ambiente virtual, tudo o que você instalar usando o pip passará por esse ambiente. Isso ajuda a evitar situações como a que você descreveu.
Por exemplo crie e ative um novo ambiente python usando o python padrão:
# create environment
$ virtualenv --distribute myproject
New python executable in myproject/bin/python
Installing distribute...done.
Installing pip...done.
# activate environment
$ . ./myproject/bin/activate
# check default python
(myproject)$ which python
/Users/me/myproject/bin/python
Sugere-se usar as opções --distribute
para indicar que a distribuição deve ser usada para instalar pacotes no novo ambiente, em vez de setuptools (mais antigos). Após a ativação, seu prompt de comando é alterado para indicar qual ambiente python está ativo.
Agora instale algum pacote. Os arquivos irão para o diretório myproject:
# install django
(myproject)$ pip install django
...
# search for django dir
(myproject)$ find myproject -iname django
myproject/lib/python2.7/site-packages/django
Por fim, desative:
# deactivate and check for default python
(myproject)$ deactivate
$ which python
/usr/bin/python
Para criar um ambiente usando uma versão não padrão do python:
$ virtualenv --distribute -p /path/to/custom/python mynewproject
Por padrão virtualenv irá copiar para o novo ambiente todos os pacotes instalados para a versão do Python que você usa para fazer o bootstrap. Para evitar isso e criar um ambiente vazio, use a opção --no-site-packages
. Isto é especialmente útil para criar ambientes que podem ser replicados exatamente, e. do desenvolvimento à produção.
Atualização: A partir da versão 1.7 --no-site-packages
se tornou o comportamento padrão do virtualenv.
Se você quiser mais detalhes, há muitos tutoriais e postagens de blogs on-line. Por exemplo:
- Notas sobre o uso do pip e do virtualenv com o Django. (a maioria do post não é específico do django)
- Trabalhando com o virtualenv.
Tente e tenho certeza que você vai ficar com ele.
Nota: Certifique-se de que seus scripts executáveis não tenham o intérprete do python codificado. Ou seja sua primeira linha deve ser #!/usr/bin/env python
e não algo como #!/usr/bin/python
.