几个小时以来,我一直被困在一个特殊的错误上,在 Google 中搜索解决方案并失败了,可能是因为这个问题非常具体,但它实际上具有更广泛的影响,这就是我一直在努力修复它的原因。
我正在使用Python 2.6,并且可以使用它在 vanilla Python 终端甚至 iPython 终端中subprocess.call()
运行一个名为STAMP的程序:
>>>Import subprocess
>>>subprocess.call('stamp')
这很好用,但是当我通过sublime text 2 (ST2) 使用它的sublimeREPL 插件for python 或 iPython (Tools>sublimeREPL>Python>...) 执行相同的事情时,它会失败并出现以下错误:
> Traceback (most recent call last): File "<stdin>", line 1, in
> <module> File "<string>", line 27, in <module> File
> "/usr/lib64/python2.6/subprocess.py", line 478, in call
> p = Popen(*popenargs, **kwargs) File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
> errread, errwrite) File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
> raise child_exception OSError: [Errno 2] No such file or directory
这与调用系统上未安装的程序时给出的错误相同。似乎自相矛盾的是,除了“stamp”之外,我测试过的任何其他已安装程序/命令都没有出现这个错误(所以你会认为 sublimeREPL 工作正常),但运行 subprocess.call('stamp') 确实有效在本机 python 终端以及 iPython 中(所以你会认为 stamp 工作/安装正常)。我想到的唯一线索是我必须使用 g++ 安装 stamp
概括:
- subprocess.call('stamp') 在本机 python 终端中工作
- subprocess.call('stamp') 在 ST2 的 sublimeREPL python 终端中不起作用
- subprocess.call() 似乎在 sublimeREPL 或本机 python 终端中都可以正常工作
额外信息:
- Python 2.6.3
- 印章安装步骤:
第 1 步:安装 GNU 科学库。从http://www.gnu.org/software/gsl/下载 将“include”和“lib”目录添加到 PATH。
第 2 步:编译 STAMP 代码。使用如下命令:
g++ -O3 -o stamp Motif.cpp Alignment.cpp ColumnComp.cpp \ PlatformSupport.cpp PlatformTesting.cpp Tree.cpp \ NeuralTree.cpp MultipleAlignment.cpp RandPSSMGen.cpp \ ProteinDomains.cpp main.cpp -lm -lgsl -lgslcblas Note: if the GSL library is not in the PATH, add the appropriate directories using the -L and -I compiler options.
第3步:测试一下!