导入错误:没有名为_tkinter的模块

1 投票
2 回答
2126 浏览
提问于 2025-04-17 08:11

我想在C++代码中使用Python,但出现了错误,这个程序是最简单的“你好,世界”。

导入PIL.Image是没问题的,但导入Tkinter时会出现“ImportError: No module named _tkinter”的错误。我打印了sys.path,但没有找到线索。

下面的截图展示了详细信息:http://i.minus.com/iWoCUlidmq5M3.jpg

环境: Visual Studio 2010。 Python 2.7.2,32位。

我是新用户,所以无法上传图片。 :(

这个问题让我花了好几天时间,希望有人能给我一些建议,非常感谢。

这里还有其他信息:

源代码:

int _tmain(int argc, _TCHAR* argv[])
{

    Py_Initialize();
    if(!Py_IsInitialized())
        cout<< "init failed"<<endl;
    PyRun_SimpleString ("import sys, struct, zlib ");
    PyRun_SimpleString ("sys.path.append('C:\\Python27\\DLLs')");
    PyRun_SimpleString ("sys.path.append('C:\\Python27\\libs')");
    PyRun_SimpleString ("sys.path.append('C:\\Python27\\Lib\\lib-tk')");
    PyRun_SimpleString ("sys.path.append('C:\\Python27\\Lib\\idlelib')");
    PyRun_SimpleString ("sys.path.append('C:\\Python27\\lib\\plat-win')");
//  PyRun_SimpleString ("print sys.path ");
    PyRun_SimpleString ("import PIL.Image, StringIO");

    PyRun_SimpleString ("import Tkinter");
}

错误信息:

Traceback (most recent call last):

    File "<string>", line 1, in <module>
    File "C:\Python27\Lib\lib-tk\Tkinter.py", line 38, in <module>
        import FixTk
    File "C:\Python27\Lib\lib-tk\FixTk.py", line 65, in <module>
        import _tkinter
ImportError: No module named _tkinter

2 个回答

0

你的exe文件可能无法访问C:\Python27\DLLs文件夹里的DLL文件(或者PYD文件,它们是一样的)。你需要把这个文件夹添加到你的Windows路径中。具体可以参考这个链接:https://stackoverflow.com/a/428217/117092

0

我解决了这个问题,因为我用了调试版的 python_d.dll,这样它会去找调试版的 pyd 文件,所以就失败了。

然后我把 python.dll 换成了 python_d.dll,并且在 pyconfig 里删除了调试处理器,这样就成功了。

撰写回答