0

我有 Blender 2.66a,它是一个提供 Python 3.3 API 的应用程序,在我的系统上,我安装了 Python 3.2,其中包含我希望在 Blender 中使用的几个模块,我都尝试了

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-terminal 工作

4

1 回答 1

3

如果我没听错,您使用的是 Blender 的 Python 3.3,但尝试包含 3.2 标准库。这势必会给你带来一连串的问题,你不应该那样做。寻找另一种方式。Blender 很可能提供了一种使用 3.3 标准库的方法(这与 3.2 有 99% 的兼容性)。当然,纯 Python 第三方库可以通过摆弄sys.path.

您现在看到的具体问题可能是由版本差异引起的。正如人们在评论中指出的那样,Python 3.3 没有找到_tkinter扩展模块。虽然它存在(因为它适用于 Python 3.2),但它很可能在一个带有与 Blender 的 Python 3.3 不兼容的ABI 标签的 .so 文件中,因此它甚至不会查看它(很像 amodule.txt不被考虑为import module)。这是一件好事。扩展模块是高度特定于版本的,轻微的 ABI 不匹配(例如在 3.2 和 3.3 之间,或使用不同选项编译的两个 3.3 之间)可能导致几乎任何类型的错误,从崩溃到内存泄漏到无声数据损坏甚至完全不同的东西.

import _tkinter; print(_tkinter.__file__)您可以通过3.2 shell验证是否是这种情况。或者,_tkinter可能完全位于不同的目录中。添加该目录实际上并不能解决上述真正的问题。

于 2013-04-08T19:03:55.627 回答