Один исполняемый файл с Py2Exe
Я пытаюсь сделать один исполняемый файл, и я приближаюсь. Пожалуйста, не рекомендуется использовать PyInstaller – я пробовал этот маршрут, спросил здесь , и добавил билеты. Он близок, но не совсем работает. Я теперь пытаюсь py2exe, и я тоже очень близко. В pyinstaller я могу создавать файлы ресурсов (который создает исполняемый файл с включенными файлами – я могу получить к ним доступ во временной папке).
Я хочу сделать то же самое для py2exe. У меня есть один исполняемый файл, но пять дополнительных папок (карты, mpl-данные, данные, фотографии и tcl). Я видел этот вопрос, но, похоже, не понимаю его и не должен работать. В моем основном файле py я использую PersistentDict(filepath)
путь к файлу PersistentDict(filepath)
котором мне нужен путь к файлу.
- Почему обновление одного словарного объекта влияет на другое?
- BeautifulSoup ведет себя по-разному на машине Amazon EC2
- Абсолютный импорт не работает, но относительный импорт
- Невозможно установить `pip` для` python 3.3`, но отлично работает для `python 2.7`
- Получить количество всех ключей в словаре словарей в Python
Мой вопрос состоит из двух частей: 1. Как получить файлы (файлы данных ниже), упакованные в исполняемый файл. 2. Как получить доступ к этим файлам в моем коде и вернуть их путь (в виде строки), например /temp/file1.jpg.
Вот мой код для моего установочного файла py2exe – обратите внимание, что у меня есть matplotlib и должен корректно включать mpl-data в мой исполняемый файл. Благодаря!
from distutils.core import setup import py2exe import shutil import glob import matplotlib,six opts = {'py2exe': { "includes" : ["matplotlib.backends", "matplotlib.backends.backend_qt4agg", "matplotlib.figure","numpy", "six", "mpl_toolkits.basemap", "matplotlib.backends.backend_tkagg"], 'excludes': ['_gtkagg', '_tkagg','_agg2','_cairo', '_cocoaagg', '_fltkagg', '_gtk', '_gtkcairo', 'tcl' ], 'dll_excludes': ['libgdk-win32-2.0-0.dll','w9xpopen.exe', 'libgobject-2.0-0.dll'], 'bundle_files': 1, 'dist_dir': "Dist Folder", 'compressed': True, } } data_files = [(r'mpl-data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')), (r'mpl-data', [r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']), (r'mpl-data\images',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\images\*.*')), (r'mpl-data\fonts',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\*.*')), (r'mpl-data\data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\data\*.*')), ('data', ['C:\\Users\\Me\\Documents\\Example_Json_File.json']), ('pics', ['C:\\Users\\Me\\Documents\\Example_Icon.ico', 'C:\\Users\\Me\\Documents\\Example_Jpg.jpg', ])] setup(windows=[{"script" : "MyMainScript.py", "data_files" : data_files, "icon_resources": [(1, 'C:\\Users\\Me\\Documents\\Example_Icon.ico')]}, ], version = "1.0", options=opts, data_files=data_files, zipfile = None, )
2 Solutions collect form web for “Один исполняемый файл с Py2Exe”
Гай объясняет, как упаковать в один файл с py2exe. Он не устанавливает пакеты внутри исполняемого файла.
Когда я упаковываю свои приложения, я не использую один исполняемый файл
options = {"py2exe": {'bundle_files': 1, 'compressed': True}},
даже не потрудились поместить их в library.zip через
options = {"py2exe": {"skip_archive":0}}
Просто укажите несколько файлов pic, файлов данных, dll и т. Д. В одном каталоге. Затем создайте установщик, используя NSIS или установку Inno. Поскольку некоторые из моих приложений должны работать как службы, Inno заботился об этом. Самый большой плюс этого подхода, вам не нужно иметь дело с «замороженными» путями к вашим файлам, которые отличаются от ваших исходных путей.
В противном случае вам может потребоваться изменить код для обнаружения замороженных путей, например http://www.py2exe.org/index.cgi/WhereAmI
Я видел пакетный конвертер EXE (Advanced Batch to EXE Converter), но это странно: это позволит вам помещать файлы в каталог «bake», и ими можно управлять с помощью «% MYFILES% \ [путь] "каталог / переменная. Если у вас есть комната для маневра, проверьте это. Единственная проблема заключается в том, что он добавит в файл «intro» (чтение: прославленная флеш-анимация), и он отобразит FIRST. (Я против пиратства, но с ним все в порядке … «Вступление» – 45 секунд и неприятно.)
Если это вас не испугает, попробуйте сделать это.
- Поиск минимального подмногообразия из n целых чисел sum> = k в линейном времени
- 3D-интерполяция массивов NumPy без SciPy