通过cmd运行时,.x中的winexpect导入无法正常工作

时间:2014-09-08 12:48:50

标签: python-2.7 cmd pexpect

当我尝试通过python corenlp.py运行它时,为什么会收到此错误?

Traceback (most recent call last):
File "corenlp.py", line 23, in (module)
from winpexpect import winspawn
File "C:\Python27\1ib\site-packages\winpexpect-1.5-py2.7.egg\winpexpect.py", 1ine 391, in (module)
class winspawn(spawn):
TypeError: Error when calling the metaclass bases
function() argument 1 must be code, not str

但是,当我在PythonShell GUI中使用它时,它运行得很好。

from winpexpect import winspawn
child = winspawn('java -cp "C:\\Python27\\Scripts\\stanford-corenlp-full-2014-08-27\\*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -ner.model edu/stanford/nlp/models/ner/english.all.3class.caseless.distsim.crf.ser.gz')

2 个答案:

答案 0 :(得分:1)

您在本地收到此错误,因为您的Python27没有安装必备组件。特别是它需要安装Pywin32。您需要从here下载并安装Pywin32(特别是在您的情况下为2.7版本)。 PythonShell GUI必须已安装此扩展程序才能正常工作。

答案 1 :(得分:0)

最后我能够解决我的问题(感谢@MichaelPetch)。我尝试了这个简单的例子test.py

from winpexpect import winspawn
child=winspawn("java")

工作正常。然后我意识到我的导入或依赖项有问题。我正在使用wexpect.py这是Windows的另一种选择。我将其重命名为pexpect.py并复制到我的代码库。

但是winpexpect依赖于pexpect(它在自己的文件夹上有另一个pexpect文件)。当我尝试通过cmd运行我的.py时,它指的是同一文件夹中的文件,这是pexpect,我刚刚重命名。

解决方案:我刚删除了wexpect