sys.path.append不适用于Python 3.x.

时间:2013-04-08 18:26:23

标签: python python-3.x

我有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

中运行

1 个答案:

答案 0 :(得分:3)

如果我说得对,那你就是从Blender使用Python 3.3但是试图包含3.2标准库。这肯定会给你带来一系列问题,你应该这样做。找另一种方式。 Blender很可能提供了一种使用3.3标准库的方法(并且这与99%的兼容性为99)。当然,可以通过摆弄sys.path来包含纯Python第三方库。

您现在看到的具体问题可能是版本差异造成的。正如人们在评论中指出的那样,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使用不同的选项编译)可能会导致几乎任何类型的错误,从崩溃到内存泄漏到静默数据损坏甚至是完全不同的东西。

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