2013-04-08 58 views
0

我有攪拌機2.66a這是Python的提供的API 3.3,在我的系統的應用我的Python 3.2的與我想用幾個模塊的安裝裏面攪拌機,我都嘗試sys.path.append不使用Python 3.x的工作

sys.path.append(r"/usr/lib/python3.2/") 
sys.path.append("/usr/lib/python3.2/") 

這個命令沒有給出錯誤的,事實上即使是自動完成功能的工作原理和新的模塊被索引,所以我嘗試

import tkinter 

但是這會生成以下錯誤

Traceback (most recent call last): 
    File "<blender_console>", line 1, in <module> 
    File "/usr/lib/python3.2/tkinter/__init__.py", line 42, in <module> 
    raise ImportError(str(msg) + ', please install the python-tk package') 
ImportError: No module named '_tkinter', please install the python-tk package 

因爲它無法加載一個模塊,它的存在要求我安裝相同的模塊,因爲沒有安裝該模塊(我沒有得到這個錯誤的呢? )。

是什麼原因明顯的問題?


編輯

的Tkinter的模塊從GNOME終端

+0

這與'sys.path.append'無效無關。您錯過了tkinter的C部分需要工作的庫。 – geoffspear 2013-04-08 18:30:00

+0

@Wooble什麼庫? tkinter可以從常規控制檯運行,其他模塊也可以從該路徑導入而不會出錯 – user2244984 2013-04-08 18:31:08

+0

您是否在控制檯和Blender模塊中檢查了python的版本?它們可能不同,'python-tk'軟件包可能只安裝了特定的版本。 – Bakuriu 2013-04-08 18:52:27

回答

3

工作如果我有你的權利,你使用Python 3.3從攪拌機但儘量包括3.2標準庫。這勢必會給你帶來一連串的問題,你應該不是那樣做。找到另一種方式。 Blender很可能提供了一種使用3.3標準庫的方式(並且這與3.2的99%兼容)。當然,純Python第三方庫可以通過與sys.path擺弄。

的具體問題,您現在看到的很可能是由於版本差異造成的。正如人們在評論中指出的那樣,Python 3.3沒有找到_tkinter擴展模塊。儘管它存在(因爲它在Python 3.2的作品),它是最有可能在與ABI tag一個.so文件與Blender的Python的3.3不兼容,因此它甚至不會看它(很像module.txt不考慮爲import module)。 這是一件好事。擴展模塊是高度特定於版本的,輕微的ABI不匹配(例如在3.2和3.3之間,或者使用不同選項編譯的兩個3.3)會導致幾乎任何類型的錯誤,從崩潰到內存泄漏到無聲數據損壞,甚至完全不同。

可以驗證是否是此通過import _tkinter; print(_tkinter.__file__)在3.2殼的情況。或者,_tkinter可能完全位於不同的目錄中。添加該目錄不會真正解決上面列出的實際問題。

+0

顯然'_tkinter'住在'/ usr/lib/python3.2/lib-dynload /'下面,但是將此路徑附加到'sys.path'並不能解決任何問題,我認爲這2個Python版本不兼容結束。 – user2244984 2013-04-08 19:25:08