2013-04-08 4 views
0

У меня есть Blender 2.66a, который представляет собой приложение, которое предлагает API Python 3.3. В моей системе у меня есть установка Python 3.2 с несколькими модулями, которые я хочу использовать в Blender, я попытался какsys.path.append не работает с Python 3.x

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

и эти команды не дает никаких ошибок, Infact даже функции автозаполнения работы и новые модули индексируются, поэтому я попытался

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 

и я не понимаю эту ошибку, потому что она не может загрузить модуль, который там там просит меня установить тот же модуль, потому что этот модуль не установлен (?).

Что может вызвать эту непонятную проблему?


EDIT

Tkinter модуль работает с гномом-терминал

+0

Это не имеет никакого отношения к 'sys.path.append', который не работает. Вам не хватает библиотеки, в которой должны работать части C tinter. – geoffspear

+0

@Wooble какая библиотека? tkinter работает с обычной консоли, а другие модули могут быть импортированы без ошибок с этого пути. – user2244984

+0

Вы проверили версию python в консоли и в модулях Blender? Вероятно, они отличаются друг от друга, и пакет 'python-tk', вероятно, установлен только для определенной версии. – Bakuriu

ответ

3

Если я вас правильно, вы используете Python 3.3 из Blender, но попробуйте включить 3.2 стандартную библиотеку. Это обязательно вызовет у вас проблемы, вы должны не сделать это. Найдите другой способ. Вероятно, Blender предлагает способ использовать стандартную библиотеку 3.3 (и на 99% совместим с 3.2). Конечно, сторонняя библиотека Pure-Python, конечно же, может быть включена путем возиться с sys.path.

Конкретная проблема, которую вы видите сейчас, скорее всего вызвана разницей в версии. Как отмечают люди в комментариях, Python 3.3 не находит модуль расширения _tkinter. Хотя он присутствует (как он работает с Python 3.2), он, скорее всего, находится в файле .so с ABI tag, который несовместим с Python 3.3 Blender, поэтому он даже не будет смотреть на него (очень похоже на 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

Смежные вопросы