错误:ImportError:没有名为docx的模块 – >使用nodeJS python-shell包来控制python脚本

我正在尝试一些相对简单但是出现这个错误:

Error: ImportError: No module named docx

这是我的nodeJS脚本:

 const python = require('python-shell'); const shell = new python('../Python/test.py'); let names = ['Hubert', 'Rupert', 'Sherbert', 'Wubbert', 'Paul']; shell.send(JSON.stringify(names)); shell.on('message', message => console.log(message)); shell.end(message => {console.log(message)}); 

python脚本“test.py”:

 import sys, json from docx import Document names = json.loads(sys.stdin.readlines()[0]) document = Document('test.docx') for name in names: for paragraph in document.paragraphs: if '$$Name$$' in paragraph.text: paragraph.text = name document.save(name+'.docx') print('completed') 

test.docx是一个空白的文件,在顶部写有“$$ Name $$”。

有任何想法吗? 当我使用docx在pyCharm中运行任何testing时,它工作正常,并不提供此错误。 只有当我通过我的节点脚本中的python-shell调用。

我试图设置这样的选项:

 const python = require('python-shell'); let options = { pythonPath : '/usr/local/bin/python3' }; python.defaultOptions = options; const shell = new python('../Python/test.py'); // rest of code is the same 

我validation了这个path是python3位于我的mac

我没有使用这些选项的运气。 所有这一切都提供了一个类似的错误: Error: docx.opc.exceptions.PackageNotFoundError: Package not found at 'test.docx

这是两个不同的错误。 第一种意思是Python找不到docx包(模块)。 第二种意思是找不到.docx文件,或者不是有效的.docx文件。

第二个错误是更好的; 因为这个错误来自于docx库本身,这意味着库被find并加载。 所以,无论你在做什么来finddocx包,你都想继续这样做。

获取包找不到错误的一个常见原因是,Python正在使用的当前目录与您认为的不同,并且找不到文件,因为它使用的实际文件path不存在。

请注意,在这里的两个不同的上下文中使用术语“包”。 一个是Python包,就像你用pip安装的python-docx一样。 第二个是开放包装协定(OPC)包,这是一个.docx文件。 所以第二个错误是说:“我不能find一个.docx文件在你给我的path”,第一个说“我不认为你安装了python-docx Python库”。