我正在尝试一些相对简单的事情,但收到此错误:
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 是一个空白的word 文件,顶部写有“$$Name$$”。
有任何想法吗?当我使用 docx 在 pyCharm 中运行任何测试时,它工作正常并且不提供此错误。仅当我在节点脚本中通过 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
我验证了这条路径是 python3 在我的 mac 上的位置
我没有使用这些选项的运气。所有这些都提供了一个类似的错误:Error: docx.opc.exceptions.PackageNotFoundError: Package not found at 'test.docx
这是两个不同的错误。第一个意味着 Python 找不到docx
包(模块)。第二个意味着 .docx 文件未找到或不是有效的 .docx 文件。
第二个错误更好;因为该错误来自docx
库本身,这意味着找到并加载了该库。所以无论你在做什么让它找到docx
包,你都想继续这样做。
获取包未找到错误的一个常见原因是 Python 使用的当前目录与您认为的不同,并且找不到文件,因为它使用的实际文件路径不存在。
请注意,此处在两个不同的上下文中使用了不同的术语“包”。一个是 Python 包,就像python-docx
你用pip
. 第二个是开放打包约定 (OPC) 包,也就是 .docx 文件。所以第二个错误是说“我在你给我的路径上找不到 .docx 文件”,第一个是说“我认为你没有安装python-docx
Python 库”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句