Хотя для этого могут быть доступны инструменты, доступные в Интернете, вы, вероятно, можете просто добавить код в свою программу компилятора python. Это решение может быть не самым лучшим или самым чистым решением, но оно должно работать. Вы можете узнать, какие файлы dll и подобные зависимости будут созданы, скомпилировав его один раз в формате без zip и перечислив файлы. Затем вы можете добавить код в программу python, чтобы проверить, присутствуют ли эти файлы, и скомпилировать его снова с помощью модифицированной программы python, но без zip-файла. Вы можете создать индексный файл в каталоге dist, в котором находятся все зависимости, путем печати строки в новый файл, открытый в режиме записи, и вы можете сжать каталог вручную, используя zip-файл модуля python.
Более простая альтернатива, которая может быть то, что вы хотите, это просто связать все эти зависимости в один файл exe. Вы можете сделать это, как это так, это одна содержит много дополнительных опций, чтобы добавить в исполняемый файл в сыром ввода:
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
windows = [{'script': raw_input("input filename: "),
"icon_resources": [(1, raw_input("iconfilename: "))]
}],
name = raw_input("enter program name: "),
version = raw_input("enter version: "),
description = raw_input("enter description: "),
author = raw_input("enter author: "),
author_email = raw_input("enter author email: "),
maintainer = raw_input("enter maintainer: "),
maintainer_email = raw_input("enter maintainer email: "),
url = raw_input("enter url: "),
zipfile = None,
)
Если это в комплекте, что мешает кому-то из изменения файла манифеста, а? –
Я верю, что он будет работать: вы вычисляете хэш для всех файлов (как функцию всех хэшей каждого файла), а затем hardcode, что где-то в exe. Если магическое число в exe не совпадает с тем, что в манифесте (или манифест не существует), а затем прервите. – izak