2009-11-15 4 views
2

Я распространяю приложение, которое использует API Python/C. У меня есть все стандартные модули python в python31.zip, который в основном является архивом папки Lib в каталоге установки python. Вот проблема: большинство распространенных модулей, таких как sys и io, работают нормально. НО tkinter этого не делает. Я получаю сообщение об ошибке «не могу найти модуль _tkinter». Мне действительно нужен tkinter в моем проекте. Я использую Windows, если это поможет.Как связать tkinter?

ответ

1

Я не лучший способ связать tkinter с вашим приложением, но я знаю, почему вы получаете ошибку. Соответствующий раздел документации zipimport модуля:

Любые файлы могут присутствовать в архиве ZIP, но только файлы .py и .py [со] доступны для импорта. ZIP-импорт динамических модулей (.pyd, .so) запрещен. Обратите внимание: если архив содержит только файлы .py, Python не будет пытаться модифицировать архив, добавив соответствующий файл .pyc или .pyo, что означает, что если ZIP-архив не содержит файлов .pyc, импорт может быть довольно медленным.

Модуль _tkinter является библиотекой c-extension/shared. Его нельзя импортировать из zip-файла.

+0

Ahhh. Это объясняет некоторые вещи. Какой файл dll/pyd отвечает за tkinter? –

1

Почему вы не используете py2exe, чтобы связать ваше приложение с исполняемым файлом? Он должен заботиться обо всех зависимостях и будет включать все, что вам нужно.

+0

Поскольку приложение не основано на python. Его C++ основан и использует python для добавления поддержки скриптов. –