Diffuse 安装在我的工作站上,与 Mercurial 配合得很好,所以我经常用它来比较差异。但是,我也使用 Python 虚拟环境在更受控制的设置中使用一些不同的模块(更容易发送给其他人)。当我尝试从我的虚拟环境(此处名为sandbox
)中运行 Diffuse 时,它会出现以下错误:
(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
出现的任何内容...
答案1
如果第一行/usr/bin/diffuse
看起来像:
#!/usr/bin/env python
它将在你的虚拟环境中以 Python 运行。大多数 Python 应用程序应将其设置为:
#!/usr/bin/python
它将使用系统 Python 运行它。如果这是错误的,那么可能是 Diffuse 或其在 Debian/Ubuntu 中的打包中存在错误。
答案2
~/.bashrc
另一个选择是向您的文件添加别名:
alias diffuse='/usr/bin/python /usr/bin/diffuse'
这可以防止在更新漫反射时发生故障。