python模块如何导入解释器_无法从嵌入式解释器导入内置模块(仅限Windows)
這個(gè)問題看起來可能是一個(gè)重復(fù)的問題
但我認(rèn)為我的問題是不同的。我正在從一個(gè)MSVC編譯的C++應(yīng)用程序運(yùn)行Python 3.4解釋器,并且我嘗試使用PTVSD模塊來調(diào)試更容易。到目前為止,我已經(jīng)能夠連接到Python Ipter,我從命令行開始,沒有問題,但我想附加到一個(gè)嵌入在我的C++應(yīng)用程序的Python解釋器。為此,我一直聽從
ptvsd模塊導(dǎo)入了\u套接字模塊,我可以在C:/Python34/dll中清楚地看到這一點(diǎn)。如果我從命令行調(diào)用python34.exe并運(yùn)行import ptvsd
ptvsd.enable_attach(None)
我可以通過查看tcp://localhost:5678。在
但是,如果我打電話
^{pr2}$
<>從C++中,我發(fā)現(xiàn)一個(gè)錯(cuò)誤,不能找到“子套接字”模塊。對于將任何內(nèi)置的Python模塊導(dǎo)入到C++應(yīng)用程序中,這是同樣的情況,盡管我能夠正確地從命令行調(diào)用的Python解釋器導(dǎo)入它們。在
我能執(zhí)行PyRun_SimpleString("import sys \n print(sys.path)");< >我的C++應(yīng)用程序,結(jié)果顯示了c:/Python 34 /dll,其中插座.pyd文件已找到。但由于某些原因,當(dāng)我嘗試導(dǎo)入它或?qū)雙tvsd時(shí),我無法獲取它PyObject* pGlobals = PyDict_New();
PyRun_String("import ptvsd", Py_file_input, pGlobals, pGlobals);
PyRun_String("ptvsd.enable_attach(None)", Py_file_input, pGlobals, pGlobals);
我真的不明白這個(gè)命令。它實(shí)際上使“找不到插座”的錯(cuò)誤消失了,但我認(rèn)為它只是抑制了它。呼叫dir(ptvsd)
python確實(shí)顯示了它的功能,但是調(diào)用PyRun_SimpleString("print(dir(ptvsd))");
沒有。我發(fā)布的第一個(gè)SO鏈接處理的是一個(gè)手工構(gòu)建的模塊,它不能被interpeter接收,但這里不是這樣。該模塊位于PYTHONPATH可以找到的地方,并且可以通過命令行找到它(它也可以由Python工具for visualstudioide獲取,但這不是重點(diǎn)。)
我無法在windows上檢查python2.7,但在linux上,python(2和3)從c++解釋器導(dǎo)入socket模塊沒有問題,所以我希望這只是一個(gè)環(huán)境問題。在
另外,輸出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++解釋器。在
很抱歉,但是有人知道怎么回事嗎?我確定我還需要經(jīng)歷一些其他的困難才能讓事情順利進(jìn)行,但我不知道它們是什么。。。在
不管怎樣,我可以很好地導(dǎo)入sys和math。我還可以通過一個(gè)自定義模塊來編譯PyImport_appendInittab(ModuleName.c_str(), _Mod_Init);
我試過我所有的測試,有沒有上面的電話。在
謝謝你抽出時(shí)間。在約翰
總結(jié)
以上是生活随笔為你收集整理的python模块如何导入解释器_无法从嵌入式解释器导入内置模块(仅限Windows)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html播放七牛云视频,直传七牛云视频播
- 下一篇: oracle form中实现隐藏,Ora