gpt4 book ai didi

python - 在 C++ 中嵌入 python 时出现模块问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:49 25 4
gpt4 key购买 nike

我正在为一个 .exe 程序制作一个 .dll 并将 python 嵌入其中。这个简单的 .py 程序运行良好

from time import *
##import OptimRestriction

def test_callsign(b):
...(simple script)
return

我所做的是将 .py 程序、Dll 和 Lib 文件夹复制到 xxx.exe 文件夹中,如所说 here .

但是一旦我取消注释 OptimRestriction 的导入,调试就会崩溃。首先,当调用初始化和处理 Python 的线程时,它开始加载符号:_ctypes.pyd_sockets.pydsst_pyd ,harshlib.pyd,unicodedata.pyd,tkinter.pyd, OptimRestriction 不使用的所有模块。

调试崩溃后给出的错误是:

xxx.exe 中 0x1E0AA0C5 (python27.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000004。

它在 _callthreadstart 函数处中断。

OptimRestriction 是一个导入大量模块(也在 .exe 文件夹中)的长程序。这是它的进口 list :

from GrafFunc import *
from LogFunc import *
from DinamicaFunc import *
from Dinamica2 import *
from CDR import *
...
import sys
import cProfile"

在我看来,线程启动时间太长,因为调试开始加载这些文件的时间很长,因此会出错。我对么?如果是这样,如果 OptimRestriction 及其 impots 不使用它们,为什么要加载这些文件?

编辑:新信息。它崩溃说 Can't import module 在此行:pModule = PyImport_Import(pName);

最佳答案

经过长时间将问题减少到某些代码行之后,我才发现问题出在某些模块打开 .txt 文件进行读取的行中。

我认为将 .txt 文件放在 .py 程序的同一文件夹中是正确的做法,但似乎我需要将它们复制到我的 c++ 插件的文件夹中(我认为那是因为当我在调试中,我的插件文件夹的系统路径已更改,因为 pyhton 的写入和读取是从那里完成的)

问题解决了!

关于python - 在 C++ 中嵌入 python 时出现模块问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com