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);
我試過我所有的測試,有沒有上面的電話。在
謝謝你抽出時間。在約翰
總結
以上是生活随笔為你收集整理的python模块如何导入解释器_无法从嵌入式解释器导入内置模块(仅限Windows)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html播放七牛云视频,直传七牛云视频播
- 下一篇: antd 判断input输入内容是否大于