解決centos中"ImportError: No module named
2017-01-02 22:06:00
12137
用Metasploit的時(shí)候出現(xiàn)了"ImportError: No module named _tkinter"
的錯(cuò)誤,_tkinter
是被Tkinter
模塊引用的,因?yàn)閷?duì)Tkinter
不太熟悉所以也不知道為什么會(huì)有這個(gè)錯(cuò)誤。
我本身是在centos中,而且系統(tǒng)中存在不同的賬號(hào)分別使用了不同版本的Python,所以我先在root賬號(hào)下試了一下import Tkinter
是OK的,接著用命令import _tkinter;_tkinter;
打印了一下_tkinter
的文件路徑,發(fā)現(xiàn)是在”/usr/lib64/python2.7/lib-dynload/”目錄下面,而且是so文件。
首先我想到直接把root下面的_tkinter.so直接拷貝到xxuser賬號(hào)的Python lib-dynload中,但是我發(fā)現(xiàn)會(huì)有undefined symbol: PyUnicodeUCS4_AsUTF8String
的錯(cuò)誤,也就是因?yàn)閞oot、xxuser兩者之間的Python編譯參數(shù)不同導(dǎo)致的,看來(lái)這種方式是不可行了。
接著網(wǎng)上找了一圈沒有發(fā)現(xiàn)能直接安裝_tkinter
的命令,后來(lái)我想到這個(gè)_tkinter.so是不是在編譯Python的時(shí)候生成的呢?所以我下載了一個(gè)跟xxuser當(dāng)前Python版本一致的Python源碼,編譯的時(shí)候選擇--enable-unicode=ucs2
,重新./configure、make
以后在build/lib.linux-x86_64-2.7目錄下面確實(shí)生成了_tkinter.so,然后把_tkinter.so拷貝到xxuser賬號(hào)的Python lib-dynload中,運(yùn)行import Tkinter
就OK了。