我已经陷入了几个小时的特殊错误,在Google中寻找解决方案并且失败了,可能是因为问题非常具体,但它实际上有更广泛的含义,这就是为什么我一直在努力解决它。
我正在使用 Python 2.6 ,可以使用subprocess.call()
在vanilla Python终端中运行名为 STAMP 的程序,甚至是iPython终端就是这样:
>>>Import subprocess
>>>subprocess.call('stamp')
这很好,但是当我通过 sublime text 2 (ST2)使用它的 sublimeREPL插件执行python或iPython时执行相同的操作(工具> 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
当您调用未安装在系统上的程序时,它会出现同样的错误。似乎自相矛盾的是,对于我测试过的除“邮票”之外的任何其他安装的程序/命令,此错误都不会出现。 (所以你会认为sublimeREPL工作正常),然而运行subprocess.call(&#39; stamp&#39;)确实可以在本机python终端以及iPython中工作(所以你会认为邮票工作/安装正常)。我想到的唯一线索是我必须使用g ++安装图章
要点:
额外信息:
步骤1:安装GNU Scientific Library。 从http://www.gnu.org/software/gsl/下载 添加&#39; include&#39;和&#39; lib&#39; 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步:测试一下!
答案 0 :(得分:2)
将我的评论转换为答案表格,以便更清楚地解决问题:
未在sublimeREPL终端内设置PATH。如果您提供戳记可执行文件的完整路径,subprocess.call
将正常工作。