我正在尝试将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
答案 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执行时加载