Python 2.7 (с Tkinter) проект в автономный exe? - PullRequest
1 голос
/ 17 сентября 2011

Я искал это целую вечность и пробовал все.Просто не могу заставить его работать.

Что я хочу сделать, так это сделать автономную версию моей маленькой программы, использующей Tkinter, для Windows.До сих пор я сделал это exe-файлом, однако папка dist/ включает папку tcl/ и дополнительный exe-файл.Как избавиться от них?

Кроме того, я не смог сделать работающий exe.Вот мой setup.py:

from distutils.core import setup
import py2exe
import sys
if len(sys.argv) == 1:
    sys.argv.append("py2exe")

setup(
    options = {
        "py2exe": {"compressed": 1, "optimize": 2, "ascii": 1, "bundle_files": 1, "includes": ["Tkinter"]}
        },
        zipfile = None,
        windows = [
        {
            "script": "hello.py",
            "icon_resources": [(0, "icon_16.ico")]
        }
    ]
)

С этим кодом я получаю уведомление «Эта программа перестала отвечать» сразу после запуска.

Удалив опцию «ascii», программане работает и оставляет лог-файл:

Traceback (most recent call last):
  File "hello.py", line 1, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "Tkinter.pyo", line 38, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "FixTk.pyo", line 56, in <module>
  File "FixTk.pyo", line 23, in convert_path
LookupError: unknown encoding: mbcs

Я был очень оптимистичен в отношении Python, поскольку казалось, что действительно приятно писать код и находить справку, но это то, без чего я ничего не могу написать.Любая помощь приветствуется.Я абсолютный новичок.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2011

Все, что находится в папке "tcl", требуется Tkinter. Tkinter фактически ссылается на интерпретатор Tcl (что означает, что вы можете запускать команды Tcl в Python!). Поэтому вам нужно все, что нужно интерпретатору Tcl (включая поддержку Tk).

Вы получаете ошибку кодирования, и в ваших настройках я вижу "ascii": 1. Избавьтесь от этого, и это должно решить проблему.

Кроме того, если вы планируете создать установщик для этой скомпилированной программы, нет реальной причины сжимать программу с "compressed": 1 (она должна быть небольшой, когда она распространяется).

0 голосов
/ 21 февраля 2013

Вы можете попробовать использовать альтернативное решение, представленное в расположении ниже, которое в основном использует метод установщика. Мне также не удалось связать эту папку tcl в exe-файле, поэтому я думаю, что это должно быть лучшим решением.

http://www.py2exe.org/index.cgi/SingleFileExecutable

0 голосов
/ 17 сентября 2011

Я думаю, что есть проблема с тем, как он связывает tkinter, вы не можете оптимизировать или связать tkinter в python, вынуть эти опции и попробовать запустить его.

...