python模块如何导入解释器_无法从嵌入式解释器导入内置模块(仅限Windows)

这个问题看起来可能是一个重复的问题

但我认为我的问题是不同的。我正在从一个MSVC编译的C++应用程序运行Python 3.4解释器,并且我尝试使用PTVSD模块来调试更容易。到目前为止,我已经能够连接到Python Ipter,我从命令行开始,没有问题,但我想附加到一个嵌入在我的C++应用程序的Python解释器。为此,我一直听从

ptvsd模块导入了\u套接字模块,我可以在C:/Python34/dll中清楚地看到这一点。如果我从命令行调用python34.exe并运行import ptvsd

ptvsd.enable_attach(None)

我可以通过查看tcp://localhost:5678。在

但是,如果我打电话

^{pr2}$

<>从C++中,我发现一个错误,不能找到“子套接字”模块。对于将任何内置的Python模块导入到C++应用程序中,这是同样的情况,尽管我能够正确地从命令行调用的Python解释器导入它们。在

我能执行PyRun_SimpleString("import sys \n print(sys.path)");< >我的C++应用程序,结果显示了c:/Python 34 /dll,其中插座.pyd文件已找到。但由于某些原因,当我尝试导入它或导入ptvsd时,我无法获取它PyObject* pGlobals = PyDict_New();

PyRun_String("import ptvsd", Py_file_input, pGlobals, pGlobals);

PyRun_String("ptvsd.enable_attach(None)", Py_file_input, pGlobals, pGlobals);

我真的不明白这个命令。它实际上使“找不到插座”的错误消失了,但我认为它只是抑制了它。呼叫dir(ptvsd)

python确实显示了它的功能,但是调用PyRun_SimpleString("print(dir(ptvsd))");

没有。我发布的第一个SO链接处理的是一个手工构建的模块,它不能被interpeter接收,但这里不是这样。该模块位于PYTHONPATH可以找到的地方,并且可以通过命令行找到它(它也可以由Python工具for visualstudioide获取,但这不是重点。)

我无法在windows上检查python2.7,但在linux上,python(2和3)从c++解释器导入socket模块没有问题,所以我希望这只是一个环境问题。在

另外,输出print(sys.version)

是3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)]

从命令行,以及3.4.3 (default, Aug 29 2015, 22:43:06) [MSC v.1800 32 bit (Intel)]<>从我的C++解释器。在

很抱歉,但是有人知道怎么回事吗?我确定我还需要经历一些其他的困难才能让事情顺利进行,但我不知道它们是什么。。。在

不管怎样,我可以很好地导入sys和math。我还可以通过一个自定义模块来编译PyImport_appendInittab(ModuleName.c_str(), _Mod_Init);

我试过我所有的测试,有没有上面的电话。在

谢谢你抽出时间。在约翰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值