2

我正在按照教程从python docs中的 C++ 程序调用 python 代码。

尝试调用multiply示例时一切正常。现在,如果我在导入库的 python 源代码中添加一行,可以说openpyxl

from openpyxl import load_workbook

我收到来自 python 的错误

ImportError: No module named openpyxl

我以为如果我导入系统库,我不会有任何问题,但如果我尝试导入也会出错datetime

如果我从 python 控制台导入文件,我没有任何错误。该openpyxl库已安装在我的系统中。

所以我的问题是:如何导入需要导入包的python源代码?

编辑:好的,我忘了提一些事情,我对你们没有完全诚实,对不起。

尝试运行示例时遇到问题:我无法让 python 找到我的multiply.py文件,并且该行PyImport_Import总是返回null

我的解决方案是添加我知道我的 python 源的路径,方法是使用PySys_SetPath. 问题是我刚刚意识到这个函数不会追加一个新目录,它只是覆盖了PYTHONPATH. 所以现在 python 可以找到multiply.py,但绝对可以找到其他任何东西。

当然我已经删除了那行但现在我有另一个问题,如果文件只是在 C++ 编译程序的同一目录中,为什么 python 找不到我的源?

我意识到sys.path我的 python 控制台与我嵌入式 python 中显示的路径有点不同:第一个在列表的开头有一个空字符串''。我不是 python 专家,但是当我将该行添加到我的路径时,我可以导入,multiply.py所以看来这就是我无法导入相对于我的可执行文件的模块的原因是缺少这个空路径 -但还是不知道是什么意思-。

我必须感谢@paul-evans,他们给了我添加路径以查找我的文件的想法。

4

1 回答 1

2

这是PYTHONPATH为了什么。您可以将其设置为包含列表模块目录的环境变量,或者在代码本身中设置如下:

import sys
sys.path.append("path/to/openpyxl/module")
于 2014-01-30T01:58:08.080 回答