python-3.x – Python 3.6,嵌入式C,添加模块路径,TypeError:需
发布时间:2020-12-20 13:18:30 所属栏目:Python 来源:网络整理
导读:我试图在C ++应用程序中嵌入 Python 3.6时扩展模块搜索路径.将当前工作目录插入系统模块搜索路径的代码是: PyObject *sysPath = PySys_GetObject("path");PyObject *path = PyBytes_FromString(".");int result = PyList_Insert(sysPath,path); 这工作正常(
我试图在C ++应用程序中嵌入
Python 3.6时扩展模块搜索路径.将当前工作目录插入系统模块搜索路径的代码是:
PyObject *sysPath = PySys_GetObject("path"); PyObject *path = PyBytes_FromString("."); int result = PyList_Insert(sysPath,path); 这工作正常(没有错误),但是当我尝试运行模块时Python不高兴: PyObject *pModule = PyImport_ImportModule("python_demo_x"); Python报告的错误是: Could not load module python_demo_x Traceback (most recent call last): File "<frozen importlib._bootstrap>",line 961,in _find_and_load File "<frozen importlib._bootstrap>",line 946,in _find_and_load_unlocked File "<frozen importlib._bootstrap>",line 885,in _find_spec File "<frozen importlib._bootstrap_external>",line 1157,in find_spec File "<frozen importlib._bootstrap_external>",line 1129,in _get_spec File "<frozen importlib._bootstrap_external>",line 1245,line 1302,in _fill_cache TypeError: a bytes-like object is required,not 'str' 通过反复试验,我发现用双引号包装路径解决了这个问题: PyObject *path = PyBytes_FromString("".""); 我找不到任何表明包装路径是必需的文档.这是必需的,还是有其他错误? 解决方法
Python 3改变了字符串的表示方式.
我在使用Popen从外部执行其他应用程序和代码时遇到过这种情况. 尝试将所有字符串从“some-string”更改为b“some-string”,将其编码为字节字符串. 从Python 3.6文档: 更多信息请访问:https://docs.python.org/3/library/stdtypes.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |