0

几个小时以来,我一直被困在一个特殊的错误上,在 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

概括:

  1. subprocess.call('stamp') 在本机 python 终端中工作
  2. subprocess.call('stamp') 在 ST2 的 sublimeREPL python 终端中不起作用
  3. 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步:测试一下!

4

1 回答 1

2

将我的评论转换为答案形式,以便更清楚地解决问题:

PATH 未在 sublimeREPL 终端内设置。如果您提供戳记可执行文件的完整路径,subprocess.call则可以正常工作。

于 2014-05-01T18:31:53.467 回答