Как я могу получить diffuse, чтобы хорошо играть с Python virtualenv?

Diffuse установлен на моей рабочей станции и хорошо работает с Mercurial, поэтому я часто использую его для сравнения. Тем не менее, я также использую Python virtualenv, чтобы использовать несколько различных модулей в более контролируемой обстановке (легче доставлять другим людям). Когда я пытаюсь запустить Diffuse изнутри моего virtualenv (здесь он называется sandbox), он рвется:

(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

Снаружи он работает просто отлично ...

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

Я предполагаю, что Diffuse - это приложение на Python, которое полагается на поиск модулей в среде; есть ли способ заставить его использовать «глобальную» среду (например, через псевдоним)? Я не уверен, что программа делает по отношению к среде ... она ищет модули в PATH, пытаясь использовать все, что which python появляется ...

4
задан 15 May 2013 в 03:13

2 ответа

Другой вариант - добавить псевдоним в ваш файл ~/.bashrc:

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

Это предотвращает поломку при обновлении diffuse.

0
ответ дан 15 May 2013 в 03:13

Если первая строка /usr/bin/diffuse выглядит следующим образом:

#!/usr/bin/env python

, она будет работать на Python внутри вашего virtualenv. Большинство приложений Python должны установить его на:

#!/usr/bin/python

, который будет запускать его с системой Python. Если это не так, это может быть ошибка либо в Diffuse, либо в его упаковке в Debian / Ubuntu.

0
ответ дан 15 May 2013 в 03:13

Другие вопросы по тегам:

Похожие вопросы: