Я написал простую программу с графическим интерфейсом на Python, используя Tkinter.Давайте назовем эту программу «gui.py».Мои пользователи запускают gui.py на компьютерах с Windows с USB-ключа, используя Portable Python ;установка чего-либо на хост-компьютере нежелательна.
Я бы хотел, чтобы мои пользователи запустили файл gui.py, дважды щелкнув значок в корне USB-ключа.Моих пользователей не волнует, что такое python, и они не хотят использовать командную строку, если им это не нужно.Я не хочу, чтобы им было все равно, какой букве назначен USB-ключ.Я хотел бы, чтобы это работало на XP, Vista и 7.
Моим первым уродливым решением было создать ярлык в корневом каталоге USB-ключа и установить для свойства "Target" ярлыка значениечто-то вроде «(root) \ App \ pythonw.exe (root) \ App \ gui.py», но я не мог понять, как сделать относительный путь в ярлыке Windows и использовать абсолютный путь, например «E:"кажется хрупким.
Моим следующим решением было создание сценария .bat в корневом каталоге USB-ключа, что-то вроде этого:
@echo off
set basepath=%~dp0
"%basepath%App\pythonw.exe" "%basepath%\App\gui.py"
Похоже, это не имеет значениябуква диска, которой назначен USB-ключ, но он оставляет окно DOS открытым во время работы моей программы.Функционально, но некрасиво.
Затем я попробовал скрипт .bat, подобный этому:
@echo off
set basepath=%~dp0
start "" "%basepath%App\pythonw.exe" "%basepath%\App\gui.py"
(см. здесь для объяснения забавных цитат)
Теперь окно DOS кратковременно мигает на экране, прежде чем открывается мой графический интерфейс.Менее некрасиво!Все еще некрасиво.
Как настоящие мужчины справляются с этой проблемой?Какой наименее уродливый способ запустить графический интерфейс Tkinter Python на компьютере с Windows с USB-накопителя?
РЕДАКТИРОВАТЬ: Все ответы ниже были очень хорошими (py2exe, pyinstaller, small .exe, .wsf script.)Решение .wsf было самым простым, поэтому я использую его сейчас.Я, вероятно, в конечном итоге переключусь на одно из трех других решений, если захочу более симпатичный значок и стандартное расширение .exe.Спасибо всем!