【发布时间】:2011-06-23 06:00:49
【问题描述】:
我正在尝试使用以下行从我的 python 程序中调用 perl 脚本:
subprocess.call(r'/path/to/compute_lexrank.pl /path/to/11sent',shell=True)
当我从 shell 运行相同的 perl 脚本时(只需输入 /path/to/compute_lexrank.pl /path/to/11sent),它按预期工作,但是当我从 python 程序运行它时,perl 脚本被执行,但给出了一个神秘的错误:
Math::MatrixReal::new(): number of rows must be integer > 0 at /Users/filippo/Downloads/clairlib-core-1.08/lib//Clair/Network.pm line 1628
现在因为我自己没有编写 perl 脚本,所以我不知道如何解决这个问题,但是为什么当我从 shell 或 subprocess.call 运行同一个脚本时,它的行为会有所不同?
我正在使用 MacOsX、python 2.6(但我也尝试过 2.5,同样的东西)和 perl 5.10。
有人可以帮忙吗?
【问题讨论】:
-
检查您的环境。您获得不同版本的 Perl 的可能性很高。
-
我该怎么做?我在 perl 脚本的开头指定了 #!/usr/bin/perl -w,如何查看使用的 perl 版本?谢谢
-
perl -e 'print "$]\n";'应该可以解决问题。 -
我添加了一个 print "$]\n";到 perl 文件,在这两种情况下它都会打印出 5.010000
-
我想我们没油了。
标签: python perl subprocess