嵌入python错误不支持按文件名导入

时间:2013-01-22 18:26:12

标签: c++ python

我正在尝试将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

调用应用程序

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分: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执行时加载