Py2exe с Tkinter - PullRequest
       56

Py2exe с Tkinter

4 голосов
/ 19 октября 2010

Я пытаюсь преобразовать основную программу с графическим интерфейсом tkinter в .exe, используя py2exe.Однако я столкнулся с ошибкой при использовании следующего сценария преобразования.

# C:\Python26\test_hello_con.py py2exe

from distutils.core import setup
import py2exe

setup(windows=[r'C:\Python26\py2exe_test_tk.py'])

C: \ Python26 \ py2exe_test_tk.py - следующий код

import Tkinter as tk

root = tk.Tk()
root.title("Test")


label1 = tk.Label(root,text="Hello!",font=('arial', 10, 'bold'), bg='lightblue')
label1.pack(ipadx=100, ipady=100)


root.mainloop()

Это ошибка, которую я получаюкогда я пытаюсь запустить только что созданный .exe

Traceback (most recent call last):
  File "py2exe_test_tk.py", line 4, in <module>
  File "Tkinter.pyc", line 1643, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories: 
    {C:/Users/My_Name/lib/tcl8.5} {C:/Users/My_Name/lib/tcl8.5} C:/Users/lib/tcl8.5 {C:/Users/My_Name/library} C:/Users/library C:/Users/tcl8.5.8/library C:/tcl8.5.8/library



This probably means that Tcl wasn't installed properly.

, я почти уверен, что это что-то в моем скрипте конвертации вызывает проблемы.Что я пропустил?Или у кого-нибудь есть пример того, как будет выглядеть скрипт преобразования для программы с графическим интерфейсом tkinter?Также возможно ли перенаправить выходные файлы .exe на мой рабочий стол?

РЕДАКТИРОВАТЬ:

В сообщении об ошибке говорится, что я пропустил init.tcl из {C: /Users/My_name/lib/tcl8.5} .Поэтому я создал этот каталог и поместил туда копию init.tcl .Теперь, когда я пытаюсь запустить .exe, он заявляет, что MSVCR90.dll отсутствует на моем компьютере и необходим для запуска моей программы.

Также это Python 2.6.5 в Windows 7.

Ответы [ 4 ]

2 голосов
/ 12 ноября 2010

Для вашей первоначальной проблемы я не могу сказать, в чем именно проблема , но обычно она помогает методом проб и ошибок угадывать недостающие файлы и каталоги. Если вы знаете, что вам не хватает, добавьте их в packages (для модулей Python) или data_files (для других файлов).

Вторая проблема связана с тем, что некоторые c-модули (и сам python) создаются с помощью MS Visual Studio, поэтому они зависят от среды выполнения MS Visual C ++ 9.0 (2008). Вы можете решить это одним из следующих способов:

  • владение копией Visual Studio (Express Edition не в счет), так что вам разрешено распространять зависимости MSVCR (при условии, что вы запрещаете своим пользователям повторное проектирование и т. Д. Зависимых частей)

  • , указывающий пользователям на скачивание распространяемого пакета MS Visual C ++ 2008 в Microsoft.

1 голос
/ 22 июля 2015

Я нашел ошибку на сайте virutalenv, которая предложила следующее https://github.com/pypa/virtualenv/issues/93

для окон в вашем каталоге "C: \ Environments \ VirtualEnv \ Scripts \ activ.bat" просто добавьте правильные пути к TCL и TK для вашей версии Python

set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
set "TK_LIBRARY=C:\Python27\tcl\tk8.5"

и перезапустите ваш cmd или shell

Это очень хорошо сработало, когда у меня появилась эта ошибка.

0 голосов
/ 09 декабря 2016

Что касается MSVCR90.dll , см. Этот пост, в котором он упакован, и, возможно, он менее предпочтителен, чем установка пользователем отдельно.

Кроме того, конкретная проблема в этом посте была моей, и я до сих пор не понимаю первопричину. Тем не менее, полное удаление Python и чистая перестройка работали отлично ... может быть, это ваша проблема тоже. py2exe дает RuntimeError: слишком рано для создания образа

0 голосов
/ 13 сентября 2013

py2exe не работает с модулями, я слышал об одном, называемом c_freeze, который, очевидно, работает с модулями, попробуйте это? http://cx -freeze.sourceforge.net /

...