Como posso ficar difuso para jogar bem com um virtualenv Python?

4

O difusor é instalado na minha estação de trabalho e funciona bem com o Mercurial, então eu geralmente o uso para o diff'ing. No entanto, também estou usando um Virtualenv Python para usar alguns módulos diferentes em uma configuração mais controlada (mais fácil de enviar para outras pessoas). Quando eu tento executar o Diffuse de dentro do meu virtualenv (aqui chamado sandbox ), ele vomita:

(sandbox)nickt@aiguadassi:/home/codes/nickt/Tape-Worms/Code
$ diffuse bread.py # fail...
Traceback (most recent call last):
  File "/usr/bin/diffuse", line 124, in <module>
    import pygtk
ImportError: No module named pygtk

Fora funciona bem ...

(sandbox)nickt@aiguadassi:/home/codes/nickt/Tape-Worms/Code
$ deactivate 
nickt@aiguadassi:/home/codes/nickt/Tape-Worms/Code
$ diffuse bread.py # works fine.

Eu assumo que o Diffuse é um aplicativo Python e depende de encontrar módulos no ambiente; Existe uma maneira de usar o ambiente "global" (por exemplo, por meio de um alias)? Não tenho certeza do que o programa está fazendo em relação ao ambiente ... ele está procurando por meio do PATH por módulos, tentando usar o que quer que which python apresente ...

    
por Nick T 15.05.2013 / 01:13

2 respostas

2

Outra opção é adicionar um alias ao seu arquivo ~/.bashrc :

alias diffuse='/usr/bin/python /usr/bin/diffuse'

Isso evita que as coisas quebrem quando o difuso é atualizado.

    
por Denegen 05.02.2014 / 10:34
5

Se a primeira linha de /usr/bin/diffuse se parece com:

#!/usr/bin/env python

ele será executado em Python dentro do seu virtualenv. A maioria dos aplicativos em Python deve configurá-lo para:

#!/usr/bin/python

que irá executá-lo com o sistema Python. Se isso estiver errado, pode ser um erro no Diffuse ou no seu pacote no Debian / Ubuntu.

    
por Thomas K 16.05.2013 / 22:46