7

我正在尝试将 python 嵌入到我的应用程序中,并且很早就被卡住了。

我将 python 嵌入到我的 C++ 应用程序中,并使用本教程中的代码:http: //docs.python.org/2/extending/embedding.html#pure-embedding

我的应用程序完全匹配并且编译成功,没有错误。但是,在运行应用程序pModule = PyImport_Import(pName);行时返回 0 失败,这意味着我从 PyErr_Print() 得到错误输出

Failed to load "C:\Users\workspace\dpllib\pyscript.py"
ImportError: Import by filename is not supported.

正在使用命令调用应用程序C:\Users\workspace\ndnlib\pyscript.py multiply 50 150

4

2 回答 2

7

我不能确定,但​​我认为由于 pName 设置为 argv[1] 并且您使用完整路径来调用脚本,因此 argv[1] 是完整路径。这意味着代码将尝试导入“C:\Users\workspace\dpllib\pyscript.py”,而 python 不能(它只能导入“pyscript”)。

尝试通过在目录中键入“pyscript.py”来运行脚本,并查看错误是否更改为“无法加载“pyscript.py””。如果是这样,那么您必须修复它,以便它不只是导入 argv[1] 并修改字符串以获取模块名称而不是文件名。

于 2013-01-22T19:00:22.513 回答
0

如果将文件创建为模块会更简单。

例如,

创建这个:

<project>/MyModule/__init__.py

然后运行你的文件<project>/script.py

dyn_module_name = (... get module name 'MyModule' from console arguments ...)
my_dynamic_module = __import__(dyn_module_name)

由于它将是一个模块,因此它将在您的 scripy.py 执行时加载

于 2016-07-11T14:54:29.563 回答