我有一个C ++程序,它有一个嵌入式python 3.4.3+。我正在尝试运行一个使用名为requests
的模块的脚本,此模块依赖于socket
,但嵌入式解释器无法导入_socket
Python版本和Callstack
3.4.3+ (3.4:f4cd9ac378d7+, Feb 16 2016, 21:24:03) [MSC v.1800 32 bit (Intel)]
Traceback (most recent call last):
File "<project path>\client_example.py", line 30, in <module>
import requests
File "F:\Python 3.4.3\lib\site-packages\requests\__init__.py", line 58, in <module>
from . import utils
File "F:\Python 3.4.3\lib\site-packages\requests\utils.py", line 12, in <module>
import cgi
File "F:\Python 3.4.3\Lib\cgi.py", line 39, in <module>
from email.parser import FeedParser
File "F:\Python 3.4.3\Lib\email\parser.py", line 12, in <module>
from email.feedparser import FeedParser, BytesFeedParser
File "F:\Python 3.4.3\Lib\email\feedparser.py", line 27, in <module>
from email import message
File "F:\Python 3.4.3\Lib\email\message.py", line 16, in <module>
from email import utils
File "F:\Python 3.4.3\Lib\email\utils.py", line 29, in <module>
import socket
File "F:\Python 3.4.3\Lib\socket.py", line 49, in <module>
import _socket
ImportError: No module named '_socket'
我也知道_socket.pyd
位于python安装位置的DLL中,但我不知道它是否也应该位于其他位置。
如何让程序的嵌入式解释器找到_socket
模块?
答案 0 :(得分:0)
您是否尝试打开python终端并加载套接字库? (即&#34;导入套接字&#34;) 我看到你正在使用MSVC,这意味着你正在使用Windows。要打开python终端,请打开命令提示符,然后输入python并按Enter键。你现在在python终端。
如果这不起作用,那么python安装就会出现问题。
另一件事,如果您使用适当的python安装程序安装python,问题很可能不是由于安装错误。
最好的问候。
答案 1 :(得分:0)
尝试将模块的路径添加到python:
sys.path.append(path/to/module)
这应该允许您导入模块。
答案 2 :(得分:0)
这是在 VS 2019 中调试我的c ++应用程序时发生的。
因为Python缺少调试编译文件: _d .dll _d .pyd * d _ .lib
解决方案:
从。\ PCbuild \ amd64复制到您的python目录
设置环境变量%PYTHONHOME%
和%PYTHONPATH%
将路径添加到sys.path
PyObject* sys_path = PySys_GetObject("path");
retVal = PyList_Append(sys_path, PyUnicode_FromString("C:\\Python38_64\\DLLs"));
再次尝试调试;-)